我正在尝试创建一个MySQL子查询,它将从table1中检索记录,但前提是table1中的记录不存在于table1记录中的任何位置。这是我的架构:
CREATE TABLE table1 (
CompanyName VARCHAR(20)
);
CREATE TABLE table2 (
ExcludeName VARCHAR(20)
);
INSERT INTO table1 VALUES
( 'COMPANY AAA 111' ),
( 'COMPANY BBB 222' ),
( 'COMPANY CCC 333' ),
( 'COMPANY DDD 444' ),
( 'COMPANY EEE 555' );
INSERT INTO table2 VALUES
( 'BBB' ),
( 'DDD' );
这是我的SQL:
SELECT DISTINCT t1.CompanyName
FROM table1 t1
JOIN table2 t2
ON INSTR(t1.CompanyName, t2.ExcludeName ) = 0;
如此SQL fiddle所示,我得不到正确的结果。我希望查询仅返回COMPANY AAA 111
,COMPANY CCC 333
和COMPANY EEE 555
,而是查询返回所有记录。为什么不排除BBB
和DDD
记录?