在将NULL视为不同的同时返回不同的行

时间:2019-05-30 09:53:38

标签: mysql

我有一张桌子: enter image description here

我需要一个SELECT语句,该语句将返回以下内容:对于具有相同phoneNumber的行,我只想返回第一行。对于NULL的行,我想返回所有这些。使用DISTINCT进行了尝试,但是对于NULL显然不起作用,因为它只会返回1 NULL行。因此,我需要的数据如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用UNION运算符组合两个查询的结果集。

在第一个查询中,您将仅获取那些 有一个电话号码,您将使用GROUP BY获取不同的电话号码。

在第二个查询中,您将获取所有没有电话号码的行。

类似的事情应该起作用:

SELECT * FROM `table`
WHERE `phoneNumber` IS NOT NULL
GROUP BY phoneNumber
UNION ALL 
SELECT * FROM `table`
WHERE `phoneNumber` IS NULL