我有这个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”的外键
那么为什么选择此记录呢?
您应该真正显示更多的查询和示例结果。
但是,我很确定问题是您不完全了解联接。毕竟,您甚至没有join
在on
子句中使用正确的语法。一个很好的猜测是您想排除第二个表中的内容。
对于您的查询,请执行以下操作:
where UserChiamante.UserId not in (select UtenteId from ChiamanteInterno)
当然,具体的语法和结构可能会有所不同,具体取决于查询的其余部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句