sql - 如何使用左外连接而不是 in 编写此查询
问题描述
请帮助我使用左外连接而不是不在下面编写代码
SELECT *
FROM A
INNER JOIN B ON A.ID = B.ID AND A.NUM = B.NUM
WHERE (A.XX <> '')
AND (A.ID = 'MM')
AND A.XX NOT IN (SELECT NUM
FROM A
WHERE ID = 'YY')
and (A.XX <> '')
AND (A.ID = 'MM')
AND (A.XX) NOT IN (SELECT NUM
FROM C
WHERE ID = 'YY')
解决方案
只需进行左连接并检查连接的表是否为空(意味着没有找到匹配的行)。
此查询将返回与原始查询相同的数据,而不使用 NOT IN 运算符:
SELECT *
FROM A
INNER JOIN B ON A.ID = B.ID AND A.NUM = B.NUM
LEFT JOIN A2 ON A2.ID = 'YY' AND A2.NUM = A.XX
LEFT JOIN C ON C.ID = 'YY' AND C.NUM = A.XX
WHERE A.XX <> '' AND A.ID = 'MM' AND A2.NUM IS NULL AND
A.XX <> '' AND A.ID = 'MM' AND C.NUM IS NULL
推荐阅读
- image - Flutter/Dart:图像小部件并检查文件是否存在
- python-3.x - 将两个整数相除并打印时出现 TypeError
- node.js - 生成自定义令牌的 firebase 函数出错
- python - 如何从字典列表中提取多个值?
- javascript - JQuery 数据属性有时是一个数组,有时是一个字符串
- graphql - 具有多个参数的 JSON 数组,用于使用 Rest Assured 的 POST 请求
- python - 我不明白我必须使用什么“driver.find_element_by_...”命令 - 有人可以帮助我吗?
- java - 我需要帮助来运行我的 Java 代码以让用户输入以下详细信息
- r - R中write.table的格式问题,utf-8原始编码
- python - 为什么我得到一个 TypeError: 'int' object not callable in a micro:bit MicroPython 程序?