我有2个mysql查询:
SELECT * FROM table WHERE !(col1 = 'a' && col2 = 'b');
和
SELECT * FROM table WHERE col1 != 'a' AND col2 != 'b';
这会返回不同的结果,我希望它像第二个语句(没有括号)。
任何想法的人?,
提前致谢。
答案 0 :(得分:1)
2个查询不同,因此您获得的结果不同。 您可以通过制作布尔表
来验证它答案 1 :(得分:1)
您的查询不相同。我认为您打算使用De Morgan的法律(https://en.wikipedia.org/wiki/De_Morgan%27s_laws),但您没有正确分发。
正确的第一个陈述是:
SELECT * FROM table WHERE !(col1 = 'a' OR col2 = 'b');
答案 2 :(得分:0)
差异是NULL
值。这些都会导致=
和<>
失败。
您可以使用NULL安全比较来解决这个问题,例如<=>
。所以:
WHERE NOT (col1 <=> 'a' AND col2 <=> 'b');