我比较两个表并输出行中没有的值。

    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/

10-16 15:15