我想将table1
和table2
与指定列进行比较,并希望从table1
返回不匹配的记录。
当我以'like'
使用其他方式并返回匹配结果时效果很好。
但我真的希望获得无与伦比的记录。
以下是示例表
table 1 ---------------------------------- No. DesignID 1 c12345 2 c16 3 c20Table 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获取所有记录
任何帮助都可以得到赞赏。
答案 0 :(得分:3)
假设您的查询有效,只需使用外部联接:
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
。不要使用括号 - 除非你有理由这样做。
答案 1 :(得分:1)
你可以这样试试
SELECT DISTINCT b.DesignID
FROM table2 a RIGHT JOIN
table1 b
ON a.DesignOption NOT LIKE CONCAT('%', b.DesignID, '%')
WHERE a.DesignOption IS NOT NULL;
希望它能运作
答案 2 :(得分:0)
但是如果你想看到子查询的方法。
Select DesignID From Table1
Where DesignID not in (SELECT a.DesignID
FROM table1 as a inner join
table2 as b on b.DesignOption like CONCAT('%', a.DesignID, '%'))