【问题标题】:Select 2 distinct columns in 4GL在 4GL 中选择 2 个不同的列
【发布时间】:2015-06-27 08:24:27
【问题描述】:

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

SELECT DISTINCT phone_number, last_name FROM table 

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

【问题讨论】:

    标签: sql informix 4gl


    【解决方案1】:

    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 情况下使用过它,所以我不记得它是否可以在这种情况下工作。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 不打算投反对票,但这个问题被标记为 informix,所以我怀疑 TSQL 会起作用。
      • 发生了,我也做过。 MSSQL 是我选择的数据库
      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多