sql - 对外部表执行查询但只返回原始表?
问题描述
假设我有一个 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 列。基本上,如何构造一个查询,该查询将使用另一个表中的值查询一个表,同时仍保持原始表结构?
解决方案
一种方法是将 EXISTS 与相关子查询一起使用
SELECT *
FROM Item i
WHERE EXISTS (SELECT 1
FROM Person p
WHERE p.id = i.person_id AND p.category = 1)
推荐阅读
- excel - 如果选择了特定选项,则将隐藏工作表 2、3 和 4 中的项目复制并粘贴到工作表 1 中
- wpf - 在自定义注释中使用 SciChart 主题画笔
- asp.net-core - 检测到 Microsoft.CodeAnalysis.Common 的版本冲突。直接从项目中引用包来解决这个问题
- google-chrome - 将谷歌浏览器全屏限制为窗口大小
- mysql - mysql 使用从数据库中读取的列别名
- python-3.x - 使用 Python 和 O365 向多个收件人发送电子邮件
- php - 如何使用 PHP 存储和检索嵌入在 MySQL 数据库中的 YouTube?
- r - dplyr 中的奇怪内存使用使用 paste 变异
- spring-boot - Spring Boot Actuator Trace HTTP POST 请求参数为空
- oracle - 导入和替换构建状态为“仅运行应用程序”的 APEX 应用程序