问题描述
|
你好
我正在写一个查询,对我得到的结果有点困惑。
选择不重复(序列号)
来自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-选择唯一/唯一,但返回所有列?