MySQL选择不包含其他选择的单词的结果

时间:2015-11-17 11:10:21

标签: mysql

我有两张表,如:

----- ---- TABLE1

1.out_name

2.out_name_log

3.out_name2

4.out_name2_log -

5.out_name3

6.out_name3_log

7.out_name4

8.out_name4_log

--- ---- TABLE2

1.name2 -

2.name3 -

我想从TABLE1中选择数据,如果它们不包含TABLE2中的任何单词。

我希望结果显示:

out_name

out_name_log

out_name4

out_name4_log

2 个答案:

答案 0 :(得分:1)

如果要从列中选择不在另一个表中的数据。 您可以使用LEFT/RIGHT JOIN s。

  SELECT TABLE1.*
    FROM
    TABLE1 LEFT JOIN TABLE2 ON TABLE1.`col1`=TABLE2.`col1`
    WHERE TABLE2.`col1` IS NULL

希望这有帮助。

答案 1 :(得分:0)

尝试使用动态SQL查询来实现此目的。但如果TABLE2有更多行,这可能是一个糟糕的解决方案。

<强>查询

set @query = null;
select
group_concat(distinct
    concat(
      'col1 not like ''%',col1,'%'' and '
    ) separator ' '
  ) into @query
from TABLE2 ;

set @query = left(@query,length(@query) - 4);
set @query = concat('select * from TABLE1 where ', @query);

prepare stmt from @query;
execute stmt;
deallocate prepare stmt;

SQL Fiddle