3

我的 4gl 程序需要:
假设我有一个包含电话号码和姓名的表格。可以有 2 个人使用相同的电话号码,也可以有 2 个姓名和 1 个电话号码。
我只需要在表格中的每个电话号码中选择 1 个。
我做了:

SELECT DISTINCT phone_number, last_name FROM table 

结果将显示 2 条记录。即使电话号码相同,由于名称不同,它不再是唯一的。无论其姓氏如何,如何获得唯一的电话号码?(但我也想得到姓氏。我不在乎哪个)

4

2 回答 2

5

DISTINCT,正如您所注意到的,将返回整体上不同的行。

听起来您正在寻找类似group by. 本质上,GROUP BY phone_number将为每个电话号码返回一行。因为您还想获取last_name,所以您需要指示数据库如何返回它。你说你不在乎哪个所以你可以简单地写:

SELECT phone_number, MAX(last_name) as last_name
FROM table
GROUP BY phone_number

Informix 还支持FIRST_VALUE聚合函数,尽管我只在 OLAP 情况下使用过它,所以我不记得它是否可以在这种情况下工作。

于 2015-04-20T14:39:39.207 回答
3

如果你不在乎哪个姓氏,那么试试这个:

SELECT phone_number,
       MAX(last_name) AS last_name
FROM table
GROUP BY phone_number
于 2015-04-20T14:38:29.963 回答