2016-03-25 69 views
0

鑑於計數不同的值,其中另一個值的數量= 1

------------------------------ 
|id | val1 | val2 | date  | 
______________________________ 
1  10  2  1990-10-02 
2  10  3  1990-10-02 
3  1  1  1990-10-02 
4  21  1  1990-10-02 
5  30  3  1990-10-02 
6  30  1  1990-10-02 

我想結果有一行ID 3和4,因爲如果我們按VAL1只有一個VAL1。

如何實現這一目標? SELECT DISTINCT COUNT(*)WHERE

+0

那麼最後兩列是不相關的? – Strawberry

+1

請顯示你想要的結果。 –

回答

2

您可以使用group byhaving此:

select t.* 
from t 
group by val1 
having count(*) = 1; 

一般情況下,我反對一個具有與select未聚集列的聚集查詢。但是,這種情況很好,因爲count(*)保證只有一個匹配的行。

注意:這不適用於其他數據庫。

+0

你的答案几乎是我需要的。我在laravel 其中('created_at','like',$ today。「%」) - > distinct('ip') - > count('ip'); https://jsfiddle.net/L7zpgbku/ - 這裏是表格。我想用這個查詢來獲得跳出率 –

1
SELECT DISTINCT x.* 
      FROM my_table x 
      LEFT 
      JOIN my_table y 
      ON y.id <> x.id AND y.val1 = x.val2 
      WHERE y.id IS NULL;