sql - 在 SQL 中使用 Intersect 和子查询时无法获得输出
问题描述
问题:
无法获得输出,意味着肯定无法获得正确的输出。
问题:
对于这个问题,需要使用 Intersect 算子。需要找到所有类型为“N”的工作类型,并在代码的最后一行进行描述。
使用的代码:
SELECT job_id
FROM bookjobs
WHERE job_id IS 'N'
INTERSECT
SELECT job_id
FROM po_items
WHERE item_id IS
(SELECT item_id
FROM items
WHERE descr = '9KG PAPER');
预期输出:
job_id
----------
002
收到(来自 CodeRunner):
没有返回输出。
使用了未知的 DBMS。表现得像PostgreSQL
和不像mysql
。
解决方案
MySQL 不支持INTERSECT
运算符。使用UNION
运算符,使用运算符时适用相同的规则UNION
。
https://www.w3schools.com/sql/sql_union.asp
使用联合
(
SELECT job_id
FROM bookjobs
WHERE job_id = 'N'
)
UNION ALL
(
SELECT job_id
FROM po_items
WHERE item_id IN (
SELECT item_id
FROM items
WHERE descr = '9KG PAPER'
)
);
否则,你可以简单地使用INNER JOIN
,它非常好用
SELECT
b.job_id
FROM
bookjobs AS b
INNER JOIN po_items AS pi ON pi.job_id = b.job_id
INNER JOIN items AS i ON i.item_id = pi.item_id
WHERE
b.job_id = 'N'
AND i.descr = '9KG PAPER'
推荐阅读
- angular - 使用 Angular 构建多语言和多方向网站的最佳方法是什么?
- oauth-2.0 - IdentityServer4 与 Sustainsys.Saml2 进行 OAuth SAML 断言
- java - ClassCastException- UIMA Ruta
- android - 如何使用 Junit 对 Cordova 插件进行单元测试?
- html - 在 wordpress 上为移动设备添加视频背景
- android - 以毫秒为单位的包含“e”的格式的日期转换
- javascript - Chrome 未加载 Shared Worker(除非处于隐身模式)
- java - 尝试使用 Spring 数据检索 ElementCollection 时出现 SQL 错误
- jquery - 服务器和客户端验证在模态弹出部分视图中不起作用
- javascript - 使用jquery从按钮的动态id动态显示内容