我有一个包含FirstName和LastName的表。
AllowZeroDateTime
我想选择不包含" Smith"的LastName。如果匹配,请不要使用任何相同的FirstName
输出结果
FirstName LastName
John Smith
John Taylor
Steve White
Adam Scott
Jane Smith
Jane Brown
通知"约翰泰勒"和" Jane Brown"不在结果中,因为其他John和Jane名字包含Smith。
我目前的查询(包括John Taylor和Jane Brown):
FirstName LastName
Steve White
Adam Scott
答案 0 :(得分:0)
您需要使用子查询过滤掉姓氏包含史密斯的所有人,如下所述:
select first_name, last_name from person
where first_name not in (
select first_name from person where last_name like '%Smith%');
以下是示例SQL Fiddle。
答案 1 :(得分:0)
Select * from Name
where firstName not in
(Select firstName from Name where lastName like '%Smith%')
答案 2 :(得分:0)
您可以使用not exists
:
select p.*
from tablPerson p
where not exists (select 1
from tablPerson p2
where p2.LastName = 'Smith' and p2.FirstName = p.FirstName
);
我更喜欢not exists
这种类型的查询,因为如果任何名字是NULL
,它会有更直观的行为。如果'Smith'
的任何名字都是NULL
,则not in
会返回空集。
答案 3 :(得分:0)
并且只是为了好的衡量......来自Dvořák的新世界交响曲的那些应变在后台播放
SELECT x.*
FROM my_table x
LEFT
JOIN my_table y
ON y.firstname = x.firstname
AND y.lastname = 'smith'
WHERE y.firstname IS NULL;