Mysql打破括号

时间:2016-07-23 03:19:47

标签: mysql

我有2个mysql查询:

SELECT * FROM table WHERE !(col1 = 'a' && col2 = 'b');

SELECT * FROM table WHERE col1 != 'a' AND col2 != 'b';

这会返回不同的结果,我希望它像第二个语句(没有括号)。

任何想法的人?,

提前致谢。

3 个答案:

答案 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');