您好 我正在写一个查询,对我得到的结果感到困惑。
选择distinct(serial_number) 来自AssyQC
此查询返回309,822结果
但是,如果我修改select语句以包含不同的列,如下所示
选择distinct(serial_number),SCAN_TIME 来自AssyQC
查询返回309,827个结果。我添加的列越多,显示的结果就越多。
我认为结果只会绑定到最初返回的不同的serial_number。这就是我想要的,只有不同的serial_numbers
有人可以向我解释这种行为吗?
由于
答案 0 :(得分:1)
SELECT distinct
适用于整个选定的列列表,而不仅仅是serial_number
。
您添加的列越多,显示您获得的组合就越多。
修改强>
来自你对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
答案 1 :(得分:0)
select distinct on serial_number serial_number, SCAN_TIME from AssyQC
请参阅此相关问题: