我有以下資料:
ID Site
2 NULL
2 32
3 6
4 7
8 12
8 13
9 14
9 14
結果應該是:
ID Site
2 NULL
2 32
8 12
8 13
請注意,結果會找到 ID 和站點的唯一組合,這些組合對于給定 ID 重復多次。
我做了以下查詢,但沒有回傳結果:
select distinct id, site
from Table1
group by id, site
having count(*) > 1
order by id
uj5u.com熱心網友回復:
SELECT
ID,
site
FROM table1
WHERE ID IN (
SELECT ID
FROM (
SELECT ID ,site
FROM table1
GROUP BY ID ,site
) x
GROUP BY ID
HAVING count(*)>1
)
請參閱:DBFIDDLE
- 將
SELECT ID, site FROM table1 GROUP BY ID, site選擇不同的值。 - 然后,使用
HAVING count(*) > 1,僅過濾多次出現的 ID。
PS您應該盡量避免在一個查詢中使用DISTINCT和。GROUP BY當你這樣做時,它會讓生活變得更加復雜......??
uj5u.com熱心網友回復:
一種方法是select distinct在 CTE 中執行,然后使用count視窗函式獲得所需的結果:
with u as (
select distinct *
from Table1
), v as (
select *
, count(*) over(partition by ID) as cnt
from u
)
select ID, Site
from v
where cnt > 1;
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477195.html
下一篇:如何在回圈中重復執行存盤程序?
