我知道,如果我想在有重復的情況下有不同的值,我可以使用DISTINCT。但我想要的是,如果其中一列有一個重復的值,我不需要該列的任何行。
eg.
| ORDER_ID | NAME | |
|---|---|---|
| ORD1 | Aaron | ORD3 |
| 攜帶 | Emily | Frank |
在這種情況下,我只希望結果是:
| ORDER_ID | NAME |
|---|---|
| ORD3 | 攜帶 |
由于ORD1和ORD3是重復的。
uj5u.com熱心網友回復:
你可以用GROUP BY進行聚合,并用HAVING指定一個關于組的條件:
SELECT * FROM tbl
GROUP BY order_id
HAVING count(*) = 1;
uj5u.com熱心網友回復:
我所能想到的最好的辦法是:
SELECT * FROM tbl
WHERE name NOT IN (SELECT name FROM tbl GROUP BY name HAVING count(name) > 1) AND order_id NOT IN (SELECT order_id FROM tbl GROUP BY order_id HAVING count(order_id) >。 1)
uj5u.com熱心網友回復:
NOT EXISTS是一個典型的方法:
select t.*
from t.
where not exists (select 1 from t t2 where t2. order_id = t.order_id and t2.name <> t.name)。)
uj5u.com熱心網友回復:
你好,我試了一下,它對我有用。
SELECT Order_Id, MAX(Name) as Name FROM table GROUP BY Order_Id HAVING COUNT(*) = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/332041.html
標籤:
上一篇:SQL。尋找非匹配項
下一篇:Postgresql帶變數的選擇
