我有两张表,如:
----- ---- 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
答案 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;