mysql - SQL 选择名字但不包含姓氏匹配

标签 mysql sql

我有一个包含名字和姓氏的表格。

FirstName   LastName
John        Smith
John        Taylor
Steve       White
Adam        Scott
Jane        Smith
Jane        Brown

我想选择不包含“Smith”的姓氏。如果匹配,请勿使用任何相同的名字

输出结果

FirstName   LastName
Steve       White
Adam        Scott

请注意,“John Taylor”和“Jane Brown”不在结果中,因为另一个 John 和 Jane 名字包含 Smith。

我当前的查询(包括约翰·泰勒和简·布朗):

Select FirstName, LastName
From tablPerson
where LastName != "Smith"

最佳答案

您可以使用不存在来做到这一点:

select p.*
from tablPerson p
where not exists (select 1
                  from tablPerson p2
                  where p2.LastName = 'Smith' and p2.FirstName = p.FirstName
                 );

对于这种类型的查询,我更喜欢不存在,因为如果任何名字为NULL,它的行为会更直观。如果'Smith' 的任何一个名字为NULL,则not in 返回空集。

关于mysql - SQL 选择名字但不包含姓氏匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711603/

相关文章:

php - Symfony 3.4 没有要处理错误的元数据类

c++ - 使用 Mysql 连接器构建应用程序时出错

php - 在mysql中随机化结果

sql - 查询以选择所有数据库,然后对结果运行另一个查询

sql - 如何确认数据库是 Postgres 以及它使用 SQL 的版本?

mysql - 从辅助 Linux 服务器备份 SQL 数据库

mysql - 如何将 mysql 中的逗号分隔值比较为完全匹配

MYSQL SUBSTRING_INDEX 提取列的每个不同字符串

sql - 各部门集团员工

java - 在 javaFx 中将 Integer tableview 显示为字符串