在 sql 中匹配元组



我正在尝试编写一个与列表中的列元组匹配的查询。因此,假设我有名字和姓氏的列表,并且我想匹配数据库中同一索引的名字和姓氏的组合。

first_names = ["Joe", "Freddy", "Michael"]
last_names = ["Jason", "Kruger", "Myers"]

在这种情况下,我希望查询返回名称为"Joe Jason"、"Freddy Kruger"或"Michael Myers"的记录的其他列。

对我来说,显而易见的方法是按名字和姓氏分组并使用组 concat 然后与串联字段匹配。但我想尽量避免这种情况。无论如何,元组的匹配可以在SQL中完成吗?

某些数据库允许您将此逻辑表示为:

where (firstname, lastname) in ( ('Joe', 'Jason'), ('Freddy', 'Kruger'),  ('Michael, 'Myers') )

总而言之,您可以使用布尔逻辑来表达这一点:

where (firstname = 'Joe' and lastname = 'Jason') or
(firstname = 'Freddy' and lastname = 'Kruger') or
(firstname = 'Michael' and lastname = 'Myers')

最新更新