SQL查询根据所选的列数返回不同的结果

问题描述

| 你好 我正在写一个查询,对我得到的结果有点困惑。 选择不重复(序列号) 来自AssyQC 该查询返回309,822个结果 但是,如果我修改select语句以包括如下不同的列 选择非重复(序列号),SCAN_TIME 来自AssyQC 该查询返回309,827个结果。我添加的列越多,显示的结果就越多。 我认为结果将只绑定到最初返回的唯一的serial_number。那就是我想要的,只有不同的serial_numbers 谁能向我解释这种行为? 谢谢     

解决方法

“ 0”不仅适用于“ 1”,还适用于整个选定的列列表。 添加的列越多,显然获得的独特组合就越多。 编辑 从您对Cade的答案的评论   假设我想要最大/最新   时标 这就是你所需要的。
SELECT serial_number,MAX(SCAN_TIME) AS SCAN_TIME
FROM AssyQC
GROUP BY serial_number
或者,如果您想要其他列
;WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER (PARTITION BY serial_number 
                              ORDER BY SCAN_TIME DESC) AS RN
FROM AssyQC
)
SELECT *
FROM CTE 
WHERE RN=1
    ,您可能正在寻找
select distinct on serial_number serial_number,SCAN_TIME from AssyQC
请参阅以下相关问题: SQL / mysql-选择唯一/唯一,但返回所有列?