我想将指定列的table1table2与字符串进行比较,并想从table1返回不匹配的记录。

当我仅使用'like'并返回匹配结果时,它的效果很好。

但是我真的希望获得无与伦比的记录。

这是样本表
    

    table 1
    ----------------------------------
    No.     DesignID
    1       c12345
    2       c16
    3       c20

    Table 2
    ----------------------
    No.    DesignOption
    1      Online-c12345-print
    2      Online-c16-proof


    

 $db->fetchallColumn(SELECT distinct(a.DesignID) FROM table1 as a, table2 as b where b.DesignOption
    not like CONCAT('%', a.DesignID, '%'));


与加入的例子

$db->fetchallColumn(SELECT distinct(a.DesignID) FROM table1 as a inner join
table2 as b on b.DesignOption not like CONCAT('%', a.DesignID, '%'));


预期结果:c20

相反,我从table1获取所有记录

任何帮助,不胜感激。

最佳答案

假设您的查询有效,只需使用外部联接:

SELECT DISTINCT a.DesignID
FROM table1 a left join
     table2 b
     ON b.DesignOption like CONCAT('%', a.DesignID, '%')
WHERE b.DesignOption IS NULL;


请注意,DISTINCT不是函数。 SQL运算符是SELECT DISTINCT。不要使用括号-除非您有理由这样做。

10-01 05:07