我发现了 mysql 如何做某事的一种奇怪方式。有人请解释为什么会这样。
我从表 A 中选择所有列,并从表 B 中以特定条件左连接,每个表 A 行可能满足也可能不满足。
现在,在连接之后,在 WHERE 语句中,如果有表 B 结果(如果没有,我确实希望保留该行)。
所以在我做的地方WHERE tableB.categoryId != 14
。没有结果(应该有的时候)。出于好奇,我尝试将运算符重写为 =,so WHERE tableB.categoryId = 14
,结果是我想要的结果我没有得到,a 和我不想要的结果我确实得到了。
我不明白,这很奇怪。
不等于不应该起作用吗?
我也尝试了!(tableB.categoryId = 14
),但这也没有产生任何结果。最后,我尝试了WHERE IF(tableB.categoryId = 14, 0, 1)
,并且出于某种原因确实有效。为什么这行得通,为什么不等于和否定运算符不起作用?
问问题
100 次