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-选择唯一/唯一,但返回所有列?     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...