首页 > 解决方案 > INNER JOIN 和 JOIN 之间的结果差异

问题描述

我有以下查询来填充临时表:

SELECT A.col1, A.col2, B.col3
INTO #Mytemp1
FROM Mytable A (NOLOCK), MyTab B (NOLOCK)
WHERE A.ID = B.ID AND B.Label LIKE '1%'

我正在尝试使用INNER JOIN而不是隐式连接:

SELECT A.col1, A.col2, B.col3
INTO #Mytemp1
FROM Mytable A (NOLOCK)
INNER JOIN MyTab B (NOLOCK) ON A.ID = B.ID
WHERE B.Label LIKE '1%'

我在第一个和第二个查询之间有 8 条记录的差异。

标签: sql-servertsql

解决方案


NOLOCK在查询中使用?

NOLOCK可以加快数据库读取,但结果集可能包含尚未提交的行,这些行通常稍后会回滚。

错误或结果集可以为空、缺少行或多次显示同一行。

为什么?因为其他事务在您读取数据的同时正在移动数据。

READ COMMITTED可以添加一个额外的问题,即多个用户同时更改同一单元格的单个列中的数据损坏。


推荐阅读