T-SQL,选择行
问题描述:
如截图所示,对于不同的id,我想选择所有具有公共updateTime的行。例如,在这里,所有三个ID都具有相同的updateTime 9:30:02和9:30:04。因此,我想选择第3行和第4行(对于id 211709),第6和第8行(对于id 301801),第9和第10行(对于id 931801),我想选择所有这6行。我应该写什么sql代码?提前致谢!!!T-SQL,选择行
答
当你需要返回只更新时间这是所有 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的总数。
+0
谢谢大家,很好的帮助! – Michael
答
该查询会给你所发生的所有更新时间不止一次
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
)
任何人,任何解决方案?请帮忙,谢谢! – Michael