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

换句话说:元素的集合,其中(aand 上没有重复项(bor bis上没有重复项NULL))。

我尝试

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

有人对此有想法吗?

4

2 回答 2

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())
于 2013-05-03T14:50:20.223 回答
0

我想这会更快

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

SQLFIDDLE

于 2013-05-03T14:58:01.603 回答