如截图所示,对于不同的id,我想选择所有具有公共updateTime的行。例如,这里所有三个ID都有共同的updateTime 9:30:02和9:30:04。因此,我想选择第3行和第4行(对于id 211709),第6行和第8行(对于id 301801),第9行和第10行(对于id 931801),我想选择所有这6行。我应该写什么SQL代码?在此先感谢!!!
答案 0 :(得分:3)
由于您只需要返回所有 ID通用的更新时间,您可以使用如下查询:
SELECT * FROM MyTable WHERE UpdateTime IN (
SELECT DISTINCT UpdateTime
FROM MyTable
GROUP BY UpdateTime
HAVING (SELECT COUNT(DISTINCT c.Id) FROM MyTable c WHERE c.UpdateTime = UpdateTime) = COUNT(DISTINCT Id)
)
如果您想知道HAVING
子句的作用 - 对于每个UpdateTime,您检查具有此UpdateTime的ID的数量是否等于ID的总数。
答案 1 :(得分:1)
此查询将为您提供多次出现的所有更新时间
Select UpdateTime
From MyTable
Group By UpdateTime
Having Count (*) > 1
将此用作子查询
Select *
From MyTable
Where UpdateTime IN
(
Select UpdateTime
From MyTable
Group By UpdateTime
Having Count (*) > 1
)