我比较两个表并输出行中没有的值。
SELECT one, two FROM `table1` WHERE `two` NOT IN
(SELECT `two2` FROM `table2`) AND `one` NOT IN (SELECT `one1` FROM `table2`)
我如何在'%two2'中不添加类似...类似的行'%two'?
我喜欢检查:
SELECT one, two FROM table1 WHERE LIKE %two NOT IN (SELECT LIKE %two2 FROM table2)
因为在此表中有时不时出现0,但是我必须淡出
我没有变量,只有行名。有什么办法可以做到吗?
最佳答案
您可以反转条件,而使用棘手的LEFT JOIN
。然后,您的查询将如下所示:
SELECT one, two FROM `table1`
LEFT JOIN `table2` ON
`table1`.`one` = `table2`.`one1`
OR `table1`.`two` = `table2`.`two2`
-- List others field comparasion using OR here --
WHERE `table2`.`one1` IS NULL;
该方法将帮助您减少子查询的数量,并大大提高性能和可读性。
关于mysql - MYSQL的where和like和not in,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37816185/