有点难以解释,但我需要一个查询来删除一个分组具有不同值的行...?
示例表:
1) A 1
2) A 1
3) B 2
4) B 3
5) C 3
6) C 3
将列分组:A1 A1 B2 B3 C3 C3。我想从表中删除第3行和第4行(B2和B3)。这些字母来自一个表格,与另一个包含数字的表格相连接。
如果这对任何人都有意义,那么任何帮助都会受到赞赏。
* edit:查询示例以获取上表:
select a.id, b.id from tableA a
join tableB b on a.first_col = b.second_col
答案 0 :(得分:0)
您可以应用窗口化聚合,因为大多数DBMS不支持COUNT( DISTINCT) OVER
您可以将逻辑切换为:
select col1, col2
from
(
select a.id as col1, b.id as col2
min(b.id) over (partition by a.id) as mincol2
max(b.id) over (partition by a.id) as maxcol2
from tableA a
join tableB b
on a.first_col = b.second_col
) dt
where mincol2 <> maxcol2
答案 1 :(得分:0)
我很好奇为什么你想要重复的行。当所有ID都相同时,这将返回一个id对:
select a.id, max(b.id)
from tableA a join
tableB b
on a.first_col = b.second_col
group by a.id
having min(b.id) = max(b.id);
如果您想要与ID匹配的行数,可以包含count(*)
。