2015-11-17 63 views
0

話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

+0

有沒有範圍正常化您的數據? – Strawberry

回答

1

如果你想選擇一列不在另一個表中的數據。 您可以使用LEFT/RIGHT JOIN s。

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

希望這會有所幫助。

+0

你有試過嗎? –

+0

它工作嗎? –

+0

按照你所說的答案,我得到表1中的所有數據而不是表2。 我在尋找的是第一個表中不包含第二個表中的任何單詞的數據(例如:out_name_log不包含name2或name3,但out_name2包含name2)。 – Kondax

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