假设我有这个表,并且我想选择所有D都是<的ID。 4.在这种情况下,它只会选择ID 1,因为2的D> 4,而3的D> 4
+----+---+------+
| ID | D | U-ID |
+----+---+------+
| 1 | 1 | a |
+----+---+------+
| 1 | 2 | b |
+----+---+------+
| 2 | 5 | c |
+----+---+------+
| 3 | 5 | d |
+----+---+------+
| 3 | 2 | e |
+----+---+------+
| 3 | 3 | f |
+----+---+------+
我真的甚至不知道从哪里开始查询这个,而且我的sql还不够好知道要google什么,所以如果之前有人询问我很抱歉。
答案 0 :(得分:2)
以下是使用conditional aggregation
的一个选项:
select id
from yourtable
group by id
having count(case when d >= 4 then 1 end) = 0
如果您需要来自相应行/列的所有数据,您可以join
使用上述内容返回表格,或者您可以使用not exists
:
select *
from yourtable t
where not exists (
select 1
from yourtable t2
where t.id = t2.id and
t2.d >= 4
)
答案 1 :(得分:2)
我会这样做:
select id
from table
group by id
having max(d) < 4;
如果您碰巧想要所有原始行,我会使用窗口函数:
select t.*
from (select t.*, max(d) over (partition by id) as maxd
from t
) t
where maxd < 4;
答案 2 :(得分:0)
使用此查询。
从yourtablename中选择ID,其中D&lt; 4;