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