首页 > 解决方案 > 对外部表执行查询但只返回原始表?

问题描述

假设我有一个 Item 和 Person 表,其中 Person 'id' 列与 Item 'person_id' 列匹配。我想检索 Item 表中 Item 的所有者(Person)具有“类别”1的记录。示例结构如下:

物品
ID
项目名
person_id
ID
姓名
类别(可以是 1、2 或 3)

我知道我可以使用“join”来查找 Item 表中两个 id 匹配的行,但我不能将 join 用于我的用例。我需要我的 SQL 查询只返回 Item 列,而不是Person 列。基本上,如何构造一个查询,该查询将使用另一个表中的值查询一个表,同时仍保持原始表结构?

标签: sql

解决方案


一种方法是将 EXISTS 与相关子查询一起使用

SELECT *
FROM Item i
WHERE EXISTS (SELECT 1
              FROM Person p
              WHERE p.id = i.person_id AND p.category = 1)

推荐阅读