mysql - Oracle 到 mysql 的转换
问题描述
我如何从 oracle 转换为 sql?
将 (+) 放在左侧或 (+) 右侧有什么区别?
可以帮我转换它,尝试在线工具对我不起作用。
SELECT sc.serial_no, sc.status, ca2.cust_ref_no, ca2.name, ca2.msis, ca2.state_name, to_char(ca2.term_datetime,'DD/MM/YYYY HH:MI AM') te_datetime, ca2.serial_no term_ssno
from so sc,
( select ca.so_id, c.cust_ref_no, c.name, ca.msis, s.state_name, ca.te_datetime, t.serial_no
from customer c, customer_account ca, state s, terminal t
where c.install_state_id= s.state_id and c.cust_id = ca.cust_id and ca.term_id = t.term_id(+)) ca2
where sc.so_id=ca2.so_id (+)and sc.status='Term'
解决方案
使用 (+) 是 sql-92 标准,强烈建议使用 ANSI 标准。
(+) 表示联接 LEFT 或 RIGHT 联接的性质。
对于您的查询,它将如下所示:
SELECT sc.serial_no, sc.status,
ca2.cust_ref_no, ca2.name,
ca2.msis, ca2.state_name,
to_char(ca2.term_datetime,'DD/MM/YYYY HH:MI AM') te_datetime,
ca2.serial_no term_ssno
from so sc LEFT JOIN
( select ca.so_id, c.cust_ref_no,
c.name, ca.msis,
s.state_name, ca.te_datetime, t.serial_no
from customer c
JOIN customer_account ca ON c.cust_id = ca.cust_id
JOIN state s ON c.install_state_id= s.state_id
LEFT JOIN terminal t ON ca.term_id = t.term_id) ca2
ON sc.so_id=ca2.so_id
WHERE sc.status='Term'
推荐阅读
- git - 为什么每次我创建一个新分支时我的本地 git 分支都会消失?
- java - “在每个项目中创建名称为 'entityManagerFactory' 在类路径资源中定义的 bean 时出错”
- firebase - Firebase 云功能安全
- python - Python bool() 函数能否为无效参数引发异常?
- xamarin.forms - 在 Android 上的 Xamarin.Forms 中使用带有大量文本的 LABEL 时,我可以做些什么来提高性能?
- ruby-on-rails - 没有这样的文件或目录@rb_sysopen - tmp/pids/puma.pid
- php - 将 HTML5 中的地理位置传递给 PHP
- php - 如何在 PHP 中显示 MySQL 列的总数
- android - 如何在 repo 同步期间从 .repo/manifests 复制内容?
- graphql - 使用 GraphQL 编写的 API 时,由于没有更好的术语,子查询