我有这个SQL查询:SQL Server查询,奇怪的行为
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是OK的,因为我没有在ChiamateInterno这个ID表,但其他3个在ChiamateInterno表中(obv,你可以从查询的第一个版本中看到)。
OBV“UtenteId”其“用户ID”的外键
那么,为什么这个纪录被选中?
您的查询语法错误。您必须提供完整的查询以更好地理解问题。 –
您可以扩展'Something'和'Something'吗? 您正在实现一个连接,并可能尝试执行一个外连接,但是您几乎可以得到一个笛卡尔产品,因为每行将被另一个表中的几乎所有其他行连接。 –