的情況我有2 MySQL查詢:Mysql的打破支架
SELECT * FROM table WHERE !(col1 = 'a' && col2 = 'b');
和
SELECT * FROM table WHERE col1 != 'a' AND col2 != 'b';
這返回不同的結果,我希望它像第二條語句(無支架) 。
任何想法的傢伙?,
在此先感謝。
的情況我有2 MySQL查詢:Mysql的打破支架
SELECT * FROM table WHERE !(col1 = 'a' && col2 = 'b');
和
SELECT * FROM table WHERE col1 != 'a' AND col2 != 'b';
這返回不同的結果,我希望它像第二條語句(無支架) 。
任何想法的傢伙?,
在此先感謝。
2個查詢是不同的,因此你正在獲得不同的結果。 您可以通過創建布爾表來驗證它
差異將是NULL
值。這些都失敗=
和<>
。
你可以使用NULL安全的比較來解決這個問題,比如<=>
。所以:
WHERE NOT (col1 <=> 'a' AND col2 <=> 'b');
您的查詢不等效。我想你打算使用德摩根定律(https://en.wikipedia.org/wiki/De_Morgan%27s_laws),但你沒有正確分發。
正確的第一個語句應該是:
SELECT * FROM table WHERE !(col1 = 'a' OR col2 = 'b');
這實在是一個評論,不是答案。有了更多的代表,[你將能夠發表評論](// stackoverflow.com/privileges/comment)。我將這個帖子標記爲刪除。 – manetsus