【问题标题】:SQL DISTINCT in the middle of select选择中间的 SQL DISTINCT
【发布时间】:2019-03-01 07:48:15
【问题描述】:

distinct 是否需要始终位于选择之后的第一行?每次尝试以下操作时,我都会在关键字“DISTINCT”附近出现语法错误,如果没有,如何在不开始选择之后的情况下进行不同的工作。

SELECT COLUMN1,
DISTINCT COLUMN 2,
COLUMNM 3

FROM TABLE_1

如果我在第一行有这样的不同 at,它会起作用:

SELECT DISTINCT COLUMN2,
COLUMN1,
COLUMN3

FROM TABLE_1

【问题讨论】:

  • Distinct 适用于整行,而不是单个字段。你真正想做的是什么?
  • 请分享一些示例数据和您想要的结果。 DISTINCT 可能不是您想要的功能。
  • 如果您有多个具有相同column2/column3 组合的行,您希望返回column1 的哪个值?你需要一个规则,然后它可能就像 group by column2,column3 或过滤 row_number 一样简单
  • distinct放在select之后以外的任何地方都是无效的SQL,会导致错误
  • 您期望的结果是什么,我们可以尝试其他查询

标签: sql select distinct


【解决方案1】:

DISTINCT 子句过滤掉 FULL DUPLICATE ROWS。它紧跟在SELECT 关键字之后,因为它适用于整行,而不是单列。您不能在列之间使用它。

【讨论】:

    【解决方案2】:

    也许我知道这种混乱来自哪里。虽然DISTINCT 确实是一个可选的SELECT 谓词,它作为一个整体作用于每个输出行,它也可以在函数参数内部使用(它本身也是一个语句),例如:

    SELECT s.id, s.name, GROUP_CONCAT(DISTINCT p.name SEPARATOR "; "), ...
    FROM subjects AS s
    LEFT JOIN property AS p ON p.subject_id = s.id
    LEFT JOIN property2 AS p2 ON p2.subject_id = s.id
    ...
    GROUP BY s.id;
    

    DISTINCT 这里的目的是不言自明的。但是再一次,如果我们看一下这个内部声明,DISTINCT 是第一位的。 另一个类似的例子是COUNT(DISTINCT column)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多