SELECT * FROM table1 WHERE folio = '123456' AND cm_flag !='X' AND certificate_no NOT IN (SELECT CONCAT(certno1,certno2,certno3,certno4,certno5,certno6,certno7,certno8,certno9,certno10) FROM table2 WHERE tofolio = '123456' )
答案 0 :(得分:0)
如果您使用例如Microsoft SQL Server,则有一个函数EXCEPT,它返回两个表之间具有相同fileds(相同名称,相同类型和相同位置)的不同行。在Oracle中,MINUS操作与EXCEPT相同。
在MySQL中没有实现EXCEPT或MINUS操作,这是不幸的,因为它可以在某些情况下允许比替代方案更好的执行计划。
这是一个有效的替代方案,比使用NOT IN操作更有效:实现连接是SQL中的最佳解决方案。
enter code here
SELECT a.*
FROM table1 as a
LEFT JOIN table2 as b
ON a.tofolio = b.tofolio
WHERE b.tofolio IS NULL
答案 1 :(得分:-1)
尝试:
SELECT * FROM table1 WHERE folio = '123456' AND cm_flag !='X' AND certificate_no NOT IN (SELECT CONCAT(certno1,',',certno2,',',certno3,',',certno4,',',certno5,',',certno6,',',certno7,',',certno8,',',certno9,',',certno10) FROM table2 WHERE tofolio = '123456')