我有一个问题,当其他列满足条件时,如何验证行是否加倍。 该表如下所示:
Type Name ID Am
O Name1 1234 1
O Name1 1235 1
O Name1 4569 2
X Name2 1234 1
X Name2 4569 2
C name3 1234 1
对于类型O,我在Name1下有2个ID,表示相同的Am = 1。 我想做一个查询,检查是否可以在相同的类型和名称及am值下找到多个ID,并返回> 1,但忽略其余类型。
谢谢!
答案 0 :(得分:1)
尝试
select type, name, am
from table
group by type, name, am
having count(*)>1
答案 1 :(得分:0)
大多数dbms支持row_number,因此您可以使用此
select * from
(
select *, row_number() over(partition by Type,Name,Am order by ID) as rn
from t
) t1 where t1.rn>1
答案 2 :(得分:0)
您是否要检查类型/名称的组合是否具有多个am值?
如果是这样:
select type, name
from t
group by type, name
having min(am) <> max(am);
答案 3 :(得分:0)
我会使用NOT EXISTS
:
SELECT t.*
FROM table t
WHERE EXISTS (SELECT 1
FROM table t1
WHERE t1.Type = t.Type AND t1.Name = t.Name AND t1.Am = t.Am AND t1.ID <> t.ID
);