我的 4gl 程序需要:
假设我有一个包含电话号码和姓名的表格。可以有 2 个人使用相同的电话号码,也可以有 2 个姓名和 1 个电话号码。
我只需要在表格中的每个电话号码中选择 1 个。
我做了:
SELECT DISTINCT phone_number, last_name FROM table
结果将显示 2 条记录。即使电话号码相同,由于名称不同,它不再是唯一的。无论其姓氏如何,如何获得唯一的电话号码?(但我也想得到姓氏。我不在乎哪个)
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 情况下使用过它,所以我不记得它是否可以在这种情况下工作。
如果你不在乎哪个姓氏,那么试试这个:
SELECT phone_number,
MAX(last_name) AS last_name
FROM table
GROUP BY phone_number