【发布时间】:2016-06-22 13:57:32
【问题描述】:
我刚刚遇到一个针对 SQL Server 2014 运行的查询的奇怪行为。
SELECT *
FROM ExampleTable
WHERE ExampleTimestamp < '22.06.2016 15:35:00'
现在奇怪的是它返回一行两次,这是我没想到会发生的。
从数据中我可以看到,重复行的两列在每次出现时都不同(其中之一是ExampleTimestamp 列)。
很可能是数据行被不同的线程更改了,但是数据行然后在一个DataTable中返回两次是否正常?
如果在查询期间更改了一行,如何防止获得两次?
【问题讨论】:
-
你可以尝试使用
DISTINCT -
我认为
DISTINCT不会在这里完成这项工作,因为我需要返回所有列。由于两行之间存在差异,它仍然会返回它们。此外,如果我在该列的 PK 上使用 distinct,那么 sql server 应该返回哪个数据部分? -
你没有多大意义。它返回 2 行的原因是它们不同,您刚刚说过它们不同。 DISTINCT 也与删除列无关
-
@Rich:是的,它们是不同的,我只是认为
SELECT * FROM的结果将是每个 PK 一行,并且在一个结果中不可能有两次相同的 PK。跨度> -
所以您的问题是您的主键中有重复数据?
标签: sql-server sql-server-2014