如何在不同列上的名字和姓氏的不同行上搜索多个名称?

Posted

技术标签:

【中文标题】如何在不同列上的名字和姓氏的不同行上搜索多个名称?【英文标题】:How to search for multiple names on different rows where first name and last name on different columns? 【发布时间】:2021-01-11 15:19:31 【问题描述】:
ID FIRST_NAME LAST_NAME
1 SARA JAMES
5 STEVE STEPHEN
2 KAL LEE
33 TONY KAMPLOO
3 SANDRA BROWN
23 HOPE WHITE
FIRST_NAME LAST_NAME
SARA JAMES

我有 2 张桌子:

Table1 有 ID、名字和姓氏,如上表。

Table2 只有名字和姓氏。 (表 1 的子集)。

我需要将 table2 中的名称与 table1 中的名称匹配并返回它们的 ID ???这只是一个示例。我的桌子很大,所以我需要一种有效的方法来做到这一点。

【问题讨论】:

问题:如果 (first_name, last_name) 在第一个表中出现多次(具有不同的 id)会发生什么?这种可能性正是您首先需要 id 的原因。在这种情况下,您的查询应该显示什么?如果在第一个表的任何地方都找不到来自第二个表的 (first_name, last_name),查询应该显示什么? 为什么不创建一个 where 条件来检查表 1 和表 2 的名字和姓氏 【参考方案1】:

这看起来像一个普通的INNER JOIN

select t1.*
from table1 t1
       inner join table2 t2
         on(t1.first_name = t2.first_name and t1.last_name = t2.last_name)

【讨论】:

【参考方案2】:

以下查询将显示第一个表中名字和姓氏出现在第二个表中的所有行。该操作称为连接。对于第一个表中的给定行,一旦在第二个表中找到匹配项,“连接”就会停止。 (在标准连接中,即使找到匹配项,搜索也会继续,因为连接必须找到 所有 个匹配项 - 即使 我们 知道只有一个匹配项,Oracle 也不'不知道,所以它必须继续搜索。)

select t1.* 
from   t1
where  (first_name, last_name) in (select first_name, last_name from t2);

【讨论】:

以上是关于如何在不同列上的名字和姓氏的不同行上搜索多个名称?的主要内容,如果未能解决你的问题,请参考以下文章

在多个列中搜索

如何使用 MongoDB 按名字和姓氏搜索用户?

VBNET如何在两个表的不同行中插入多个值

如何计算两个多对多字段上的不同行

创建名称助手,将名字和姓氏分开

如何在mongodb中搜索名字和姓氏