sql - BO SQL 查询:LEFT JOIN
问题描述
我正在尝试显示表 A 中的表 B 的 ID,并为表 A 中没有 ID 的表 B 的 ID 显示 null。
此查询在 sql developer 下可以正常工作:
SELECT a.file_name, a.DATE, a.ID, a.number_line,
b.file_name, b.DATE, b.ID, b.number_line
FROM TABLE a LEFT JOIN
TABLE b
ON a.ID = b.ID AND
b.file_name LIKE 'EEEEEE%' AND
b.DATE BETWEEN '2019-10-01' AND '2020-01-01'
WHERE a.file_name LIKE 'RRRRRR%';
但是它在业务对象下不起作用的问题,该软件建议以这种方式编写请求,并且它只显示表 B 中的行,其中包含表 A 中的 ID 而不是空值:
SELECT a.file_name, a.DATE, a.ID, a.number_line,
b.file_name, b.DATE, b.ID, b.number_line
FROM TABLE a, TABLE b
WHERE ( a.id(+)=b.id ) AND
( a.file_name LIKE 'RRRRRR%' AND b.DATE BETWEEN '2019-10-01'
AND '2020-01-01' AND b.file_name LIKE 'EEEEEE%');
如何翻译这个请求?
解决方案
如果问题是LEFT JOIN
条件不等式,您可以使用子查询:
SELECT a.file_name, a.DATE, a.ID, a.number_line,
b.file_name, b.DATE, b.ID, b.number_line
FROM TABLE a LEFT JOIN
(SELECT b.*
FROM TABLE b
WHERE b.file_name LIKE 'EEEEEE%' AND
b.DATE BETWEEN '2019-10-01' AND '2020-01-01'
) b
ON a.ID = b.ID
WHERE a.file_name LIKE 'RRRRRR%';
如果您必须使用这种古老的语法,您也可以使用子查询来应用它。
推荐阅读
- excel - 如何在下一个空表行中粘贴单元格范围?
- python - 通过 Pandas 在 Jupyter Notebook 中读取 CSV 时出错
- python - plt.bar 不与点击事件(或任何事件)连接 - python matplotlib
- ide - 启动自己的项目时,Omnet++ IDE 一直冻结
- java - 找不到 .csv 文件
- c++ - 在类中使用 boost::math::distribution
- excel - 从 Excel 电子表格中填写 Word 文档,并能够选择用于生成文档的行
- java - 使用 Thymeleaf 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' 渲染 HTML 模板时出错
- python - 在 Python 中,列表和元组之间的类型转换是如何发生的?
- html - (webrtc)setRemoteDescription 不适用于发起者