SQL Server查询,奇怪的行为

Alist3r

我有这个SQL查询:

SELECT  UserChiamante.UserId as UserId

FROM    Something

WHERE   Something AND
        UserChiamante.UserId = ChiamanteInterno.UtenteId 

结果是这样的:

_________________
|     UserId    |       
|_______________|
|     1008      |
|---------------|
|     1022      |
|---------------|
|     1032      |
|_______________|

没关系。但是,如果我更改查询:

SELECT  UserChiamante.UserId as UserId

FROM    Something

WHERE   Something AND
        UserChiamante.UserId != ChiamanteInterno.UtenteId 

我期望得到不同的结果,但是会得到一些奇怪的结果,例如:

_________________
|     UserId    |       
|_______________|
|     1008      |
|---------------|
|     1022      |
|---------------|
|     1032      |
|---------------|
|     1258      |

ID 1258还可以,因为我在ChiamateInterno表中没有此ID,但是其他3在ChiamateInterno表中具有它(OBV,您可以从查询的第一个版本中看到)。

Obv“ UtenteId”为其“ UserId”的外键

那么为什么选择此记录呢?

戈登·利诺夫(Gordon Linoff)

您应该真正显示更多的查询和示例结果。

但是,我很确定问题是您不完全了解联接。毕竟,您甚至没有joinon子句中使用正确的语法一个很好的猜测是您想排除第二个表中的内容。

对于您的查询,请执行以下操作:

where UserChiamante.UserId not in (select UtenteId from ChiamanteInterno)

当然,具体的语法和结构可能会有所不同,具体取决于查询的其余部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章