我有一個表有多個列,只想找到A和B的組合不同的表。一個DISTINCT問題
可能有幾個這樣的行,我想爲每個A和B的不同組合的行的每個字段(假設也有列C和D)。
澄清:
我想這樣說
for each distinct A/B combination
get C and D
我有一個表有多個列,只想找到A和B的組合不同的表。一個DISTINCT問題
可能有幾個這樣的行,我想爲每個A和B的不同組合的行的每個字段(假設也有列C和D)。
澄清:
我想這樣說
for each distinct A/B combination
get C and D
這聽起來像它應該使用GROUP BY來解決,但也可能可能是因爲被這個問題所指定的UNION:
使用EXISTS:
SELECT a.c, a.d
FROM YOUR_TABLE a
WHERE EXISTS (SELECT NULL
FROM YOUR_TABLE b
WHERE b.a = a.a
AND b.b = a.b
GROUP BY b.a, b.b
HAVING COUNT(*) > 1)
使用JOIN:
SELECT a.c, a.d
FROM YOUR_TABLE a
JOIN (SELECT b.a, b.b
FROM YOUR_TABLE b
GROUP BY b.a, b.b
HAVING COUNT(*) > 1) x ON x.a = a.a
AND x.b = a.b
EXISTS可能是最好,如果你不打算從派生表的SELECT子句中的列返回。
+1,演示優越的sql fu :) – 2011-05-30 04:01:46
不應該是'有計數(*)= 1'嗎?我可能會誤解這個問題,但這聽起來只有具有不同值('a,b')的行才需要。 – a1ex07 2011-05-30 04:13:22
@ a1ex07:我以爲OP希望不同的對具有重複 - 是不是「每個不同組合的幾行」推斷出什麼? – 2011-05-30 04:15:23
你沒有回答哪一行的問題,以顯示當你有兩排,A和B相同的值。例如:
A B C D
=============
0 1 5 5
0 1 4 7
0 0 1 1
如果你想A和B的只有唯一實例,應該返回C = 5,D = 5還是C = 4,D = 7?如果您可以決定如何使用聚合函數返回值,則可以在C和D列上使用GROUP BY A, B
子句和聚合方法。
例如,以下將返回C的最大價值和d:
SELECT A, B, MAX(C), MAX(D)
FROM myTable
GROUP BY A, B
有關集合函數的完整列表,請訪問此網站:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
高興的更新,但人們誰回答不會收到有關您的更改的警報。 – 2011-05-30 06:04:08