mysql - 如何在不使用存在的情况下重写此 sql 脚本
问题描述
我是 sql 新手。如何在不使用存在的情况下重写以下脚本
select
distinct oe.*,
o.*,
so.*,
ro.*
from
ms_bvoip_order_extension oe
inner join ms_order o on oe.ms_order_id = o.ms_order_id
inner join ms_sub_order so on so.ms_order_id = o.ms_order_id
inner join ms_job j on j.entity_id = so.ms_sub_order_id
inner join ms_task t on t.wf_job_id = j.wf_job_id
where
o.order_type = 900
and o.entered_date between to_date('12/01/2018 00:00:00', 'mm/dd/yyyy hh24:mi:ss')
and to_date('12/31/2018 00:00:00', 'mm/dd/yyyy hh24:mi:ss')
and j.entity_type = 5
and exists (
select
'X'
from
ms_task t
where
(
(t.name like '%Error%')
or (t.name like '%Correct%')
or (t.name = '%Create AOTS Ticket%')
)
and t.job_id = hextoraw(j.wf_job_id)
)
order by
o.usrp_order_number;
解决方案
正如 Jerry 提到的,您可以使用 EXISTS,但如果您不想这样做,您可以加入相同的 EXISTS 子查询:
INNER JOIN (
SELECT DISTINCT hextoraw(j.wf_job_id) JOB_ID
FROM ms_task
WHERE t.name like '%Error%'
or t.name like '%Correct%'
or t.name like '%Create AOTS Ticket%'
) TASK ON t.job_id = TASK.JOB_ID
您可能可以删除您的其他 ms_task 表并 JOIN ON j.wf_job_id
......
推荐阅读
- reactjs - 当父状态更改时,React 子组件不会重新渲染
- android - 添加插件时出错 plugin.google.maps.CordovaGoogleMaps
- r - R Shiny - 隔离使用 req() 检查前置条件的反应式表达式
- flutter - Flutter:过滤ListView时删除重复项
- java - 所有 JPA 规范查询之间的 AND 操作
- python - Python正则表达式循环跳过每三个项目
- openssl - 使用存储在 Yubikey 上的 CA 对证书签名请求进行签名
- ios - 如何使用 Twilio 可编程视频 SDK 在 iOS 上将用户配对
- ios - 如何使用 AWS 推送通知服务修复未注册或过期令牌错误
- java - 为什么 ConnectException:连接被拒绝:从 HttpURLConnection.getResponseCode() 抛出连接?