2014-04-01 42 views
0

因此,我想从这两个表中筛选出ID'union all'ed。基本上,如果ID包含某个名称,我想将它们过滤出查询。下面是一个例子在另一列中筛选出包含特定值的ID

ID,Name 

1,Mark 
1,John 
2,Peter 
2,Matt 
3,Henry 
3,Matt 
4,John 
4,Olaf 

所以我不希望包括含有“马特”,意思是我想出来完全过滤掉的ID 2和3的ID。

使用类似:

select * 
from name.table 
where name not like 'Matt' 

似乎只筛选出的行。

+0

'试图从这两个表中筛选出ID?另一个在哪里? –

+0

这是union all的结果,因此您会看到具有不同名称的重复ID。 – user3348557

回答

0

你会想要做这样的事情:

select * from table where id not in(
    select Id from table where name like '%Matt%' 
) 

这不包括含马特

排除这等于行马特

select * from table where id not in(
    select Id from table where name ='Matt' 
) 
+0

嘿,你的第一个为我完美工作!非常感谢!。 – user3348557

+0

良好的交易,用户......不客气 – MikeTWebb

1

使用not exists

select n.* 
from names n 
where not exists (select 1 from names n2 where n2.id = n.id and n2.name = 'Matt') 
0

试试这个:

SELECT * FROM TableName 
WHERE ID NOT IN (SELECT ID FROM TableName WHERE name='Matt') 

OR使用LIKE

SELECT * FROM TableName 
WHERE ID NOT IN (SELECT ID FROM TableName WHERE name LIKE '%Matt%') 

对于不同的值:

SELECT DISTINCT ID FROM TableName 
WHERE ID NOT IN (SELECT ID FROM TableName WHERE name='Matt') 
0
SELECT * FROM names 
WHERE ID NOT IN 
(SELECT ID FROM names WHERE name='Matt') 
0
(SELECT Column(s) FROM Table1) 
UNION ALL 
(SELECT Column(s) FROM Table2) 
EXCEPT 
(SELECT Column(s) FROM Table1 where name = 'Matt') 
EXCEPT 
(SELECT Column(s) FROM Table2 where name = 'Matt') 
名行
相关问题