【发布时间】:2023-02-07 06:07:17
【问题描述】:
我有一个明显产生重复的查询,但我不明白为什么,因为我在这里使用了 DISTINCT 选项。
我刚刚将 SQL 服务器从一个正在运行的 SQL 版本 12.0.6329.1 迁移到 13.0.6419.1(我相信是 2014 年到 2016 年) 而且我在旧服务器上没有遇到同样的问题。
任何想法为什么 DISTINCT 不能作为 [我] 预期的?
SELECT DISTINCT
[UWI_vn]
,[WI_PrdWellCnt]
,[AAV_GUID]
,[InResFlag]
FROM [AAV_WellStore].[dbo].[V_ResultsProdBdgtOpsUpLiveBaseV4.5]
WHERE [InResFlag] =1
AND [WI_PrdWellCnt] > 0
AND [UWI_vn] = '102/16-25-069-05W6/0'
【问题讨论】:
-
尝试散列每一行,看看值是否相同:
binary_checksum( [UWI_vn] ,[WI_PrdWellCnt] ,[AAV_GUID] ,[InResFlag]) -
在提问时,您需要提供 minimal reproducible example: (1) DDL 和样本数据填充,即 CREATE table(s) 加上 INSERT T-SQL 语句。 (2) 您需要做什么,即逻辑和您的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面 #1 中的示例数据。 (4) 您的 SQL Server 版本 (SELECT @@version;)。问题中的所有内容都是文本,没有图像。
-
[WI_PrdWellCnt]是什么数据类型?它可能是像FLOAT这样的近似数字类型吗? -
@KickingAustin 一次对每个字段进行校验和以找到不同的字段。
-
不确定这是否清楚,但是像 float 这样的近似数字将不是唯一的。如果您正在进行任何类型的精确比较,请存储为小数。浮点数用于速度和近似值。
标签: sql sql-server sql-server-2016