Select 4GL 中有 2 个不同的列

Select 2 distinct columns in 4GL

我的 4gl 程序需要:
假设我有一个 table,其中包含一个 phone 号码和一个名字。可以有 2 个人使用相同的 phone 号码,或者 2 个名字使用 1 个 phone 号码。
我只需要 select table 中每个 phone 号码中的 1 个。
我做了:

SELECT DISTINCT phone_number, last_name FROM table 

结果将显示 2 条记录。即使 phone 数字是相同的,因为名称不同,它不再是唯一的。我怎样才能得到一个唯一的 phone 号码而不考虑它的 last_name? (但我也想得到姓氏,我不关心是哪一个)

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

SELECT phone_number,
       MAX(last_name) AS last_name
FROM table
GROUP BY phone_number
正如您所注意到的,

DISTINCT 将 return 行完全不同。

听起来您正在寻找类似 group by 的内容。本质上,GROUP BY phone_number 将为每个 phone 数字 return 一行。因为您还想获得 last_name,所以您需要指示数据库如何 returned。你说你不关心哪个所以你可以简单地写:

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

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