在 SQL 中的 IN 子句中查询多个列
根据给定列的一组值查询数据库表时, IN 子句是一个方便的选项。然而,当处理多列时,IN 子句就变得不可用。
为了克服这一挑战,通常的方法涉及使用联接或 EXISTS 子句。但是,这些方法要求数据库中存在主表和搜索数据。
考虑一个用例,其中您有一个包含列(名字、姓氏、城市)的用户表,并且您需要检索城市以获取(名字,姓氏)元组列表。出现了两个潜在的解决方案:
解决方案 1:
构造一个涉及 OR 条件的冗长 SELECT 查询:
SELECT city FROM user WHERE (firstName=x and lastName=y) or (firstName=a and lastName=b) or ...
解决方案 2:
创建一个包含所有firstName 和lastName 值并在用户表和临时表之间执行联接。
替代解决方案:
幸运的是,有一种使用 IN 子句查询多列的简单方法:
SELECT city FROM user WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));
Sqlfiddle演示:
[Sqlfiddle Demo](
该方案有效解决了 IN 子句中查询多列的问题,无需借助 join 或 EXISTS 子句。它提供了一种高效、简洁的方法来检索所需的数据。
以上是SQL中如何使用IN子句查询多列?的详细内容。更多信息请关注PHP中文网其他相关文章!