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 情况下使用过它,所以我不记得它是否适用于这种情况。
我的 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 情况下使用过它,所以我不记得它是否适用于这种情况。