我需要一个查询来选择不使用HAVING COUNT函数的重复值列表(这是由于软件约束只允许我使用SELECT,FROM和WHERE)。
以类似的方式:
select column_name, count(column_name)
from table
group by column_name
having count (column_name) > 1;
答案 0 :(得分:2)
您可以使用窗口函数
选择重复的column_name值select * from (
select column_name, count(*) over (partition by column_name) cnt
from mytable
) t1 where cnt > 1
这是使用exists
的另一个查询,以防您无法使用窗口函数
select * from mytable t1
where exists (
select 1 from mytable t2
where t2.column_name = t1.column_name
and t2.id <> t1.id
)
答案 1 :(得分:2)
我可以将rowid视为一个选项:
select column_name from table a
where a.rowid >
any( select b.rowid
from table b
where a.column_name = b.column_name );
这是example
答案 2 :(得分:1)
纯粹使用SELECT,FROM,WHERE(附加DISTINCT):
SELECT DISTINCT a.column_name FROM mytable as a, mytable as b
WHERE a.rowID != b.rowID AND a.column_name = b.column_name;
或者,也许更好
SELECT DISTINCT a.column_name FROM mytable as a, mytable as b
WHERE a.rowID < b.rowID AND a.column_name = b.column_name;
这看起来像是某些数据库课程中的练习。然而,我认为答案在现实中并没有用。 :)