选择双重复制

时间:2013-05-03 14:47:57

标签: mysql

这是一个例子

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上没有重复项(bb上没有重复项是NULL))。

我试试

  • SELECT DISTINCT(a), b,但我有2行,b = 20
  • SELECT a, DISTINCT(b),但我在列a上有重复项,并且合并了2个NULL值。
  • GROUP BY aGROUP BY b,与之前的2个查询相同。

有没有人有这个想法?

2 个答案:

答案 0 :(得分: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())

答案 1 :(得分:0)

我想这会更快

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

<强> SQLFIDDLE