仅返回符合特定条件的值
我有
ID Rank
11 1
11 2
22 1
22 2
22 3
33 1
33 3
44 1
55 1
55 2
I Want
11
44
55
即,我只想返回从未处于排名“3”的 ID。
更新 - 除了下面的答案之外,我还想出了另一种更简单的方法来做到这一点。
SELECT ID FROM
(
SELECT ID, SUM(CASE WHEN Rank = 3 THEN 1 ELSE 0 END) flag FROM
(
SELECT ID, Rank FROM T1
) a
GROUP BY ID
) b
WHERE flag = 0;
I have
ID Rank
11 1
11 2
22 1
22 2
22 3
33 1
33 3
44 1
55 1
55 2
I Want
11
44
55
That is, I want to return only the IDs that have never been in a rank of '3'.
UPDATE - I figured another way, rather simpler, to do this in addition to the answer below.
SELECT ID FROM
(
SELECT ID, SUM(CASE WHEN Rank = 3 THEN 1 ELSE 0 END) flag FROM
(
SELECT ID, Rank FROM T1
) a
GROUP BY ID
) b
WHERE flag = 0;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
NOT EXISTS
:或者,使用
LEFT JOIN
:Using
NOT EXISTS
:Or, using
LEFT JOIN
:我会创建一组唯一的 ID,然后检查这些 ID 的排名是否为 3。那些没有的,将它们放入最终数组中。
$noThreeArray 现在具有您想要的值。
I would make an array of unique ids, then check those for a rank of three. Those that don't, put them into a final array.
$noThreeArray now has the values you're after.