2013-05-03 78 views
0

這裏選擇是一個例子雙重複

a b 
-------- 
1 10 
1 10 
2 20 
2 20 
3 20 
3 20 
4 NULL 
5 NULL 

我想這在MySQL查詢:

a  b 
------------ 
1  10 
2 or 3 20 
4  NULL 
5  NULL 

換句話說:元素集合中,其中(存在於a和沒有重複(在bbNULL)沒有重複))。

我嘗試

  • SELECT DISTINCT(a), b,但是我有2排用b = 20
  • SELECT a, DISTINCT(b),但是我有列重複和2個NULL值被合併。
  • GROUP BY aGROUP BY b,與前面的兩個查詢相等。

有沒有人有想法呢?

回答

3
SELECT MIN(a) a, b 
FROM table1 
WHERE b IS NOT NULL 
GROUP BY b 
UNION 
SELECT a, b 
FROM table1 
WHERE b IS NULL 

試試這個,

SELECT MIN(a) a, b 
FROM table1 
GROUP BY COALESCE(b, RAND()) 
+0

雙方將不給退了'3' OP問,但我敢肯定,這將是不可能的反正。 – Aquillo 2013-05-03 14:53:54

+0

@Aquillo他希望返回'2'或者'3',這會返回'2'。 – 2013-05-03 14:55:05

+0

@Aquillo還有一種方法。這裏:http://www.sqlfiddle.com/#!2/79be3/21 – 2013-05-03 14:55:16

0

我想這將是更快

SELECT MIN(a) a, b 
    FROM table1 
GROUP by IF(b is null, a, b); 

SQLFIDDLE

+0

查看新查詢記錄的結果:http://www.sqlfiddle.com/#!2/f12d0/1 – 2013-05-03 14:59:55

+0

@JW웃似乎我錯過了:D,謝謝 – Akash 2013-05-03 15:17:33