如果值是double,则返回SQL

时间:2018-09-28 10:17:12

标签: sql

我有一个问题,当其他列满足条件时,如何验证行是否加倍。 该表如下所示:

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,但忽略其余类型。

谢谢!

4 个答案:

答案 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
             );