下面的查询将选择所有 name
表 1 中的记录不在表 2 中:
SELECT t1.name
FROM t1
WHERE t1.name NOT IN (SELECT t2.name from t2)
这对于 name
的完整匹配效果很好。字段,但它不适用于部分匹配。如何修改查询,使其仅选择 name
表 1 中的记录,其中 name
没有任何部分表2中的上诉?
我怀疑答案将涉及使用 INSTR,但我不确定语法。谢谢。
最佳答案
加入即可完成工作
CREATE TABLE test1 (
name VARCHAR(10);
)
CREATE TABLE test2 (
name VARCHAR(10);
)
INSERT INTO test1 VALUES
( 'x123' ),
( 'y123' ),
( 'z123' );
INSERT INTO test2 VALUES
( '123' ),
( '423' ),
( '23' );
SELECT t1.name, t2.name
FROM test1 t1
JOIN test2 t2
ON INSTR(t1.name, t2.name ) = 0
ORDER BY t1.name;
关于使用 INSTR 的 MySQL 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517732/