MySQL子查询使用INSTR

时间:2015-02-14 16:37:43

标签: mysql subquery

下面的查询将选择表1中的所有name记录,这些记录不在表2中:

SELECT t1.name
FROM t1
WHERE t1.name NOT IN (SELECT t2.name from t2)

这适用于name字段的完整匹配,但它不适用于部分匹配。如何修改查询,以便仅选择表1中的name记录,其中表{2}中的name上诉的 无参与

我怀疑答案是涉及使用INSTR,但我不确定语法。感谢。

1 个答案:

答案 0 :(得分:1)

JOIN将完成这项工作

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;