sql - ORA-00907: 两个子查询的左连接缺少右括号
问题描述
自从我弄乱了 SQL 以来已经有一段时间了,我正在为一门课程重新拾起它。我需要为我的用户的所有表创建一个包含表名、列名、约束名和约束类型的表,但是每次尝试时,都会出现缺少右括号的错误。到目前为止,这是我的代码:
SELECT table_name, column_name, constraint_name, constraint_type
FROM
(
SELECT a.table_name, a.column_name, a.constraint_name FROM all_cons_columns AS a
WHERE a.owner = '[my_user]'
AND a.table_name NOT LIKE 'APEX%'
AND a.constraint_name NOT LIKE 'BIN%'
ORDER BY a.table_name
) AS x
LEFT JOIN
(
SELECT b.constraint_name, b.constraint_type FROM all_constraints AS b
WHERE b.owner = '[my_user]'
AND b.table_name NOT LIKE 'APEX%'
AND b.constraint_name NOT LIKE 'BIN%'
ORDER BY b.constraint_name
) AS y
ON x.constraint_name = y.constraint_name
SQL Developer 说它位于第 4 行的“AS a”,但我在网上找不到太多信息。任何帮助深表感谢!
解决方案
如果您删除 AS 它可以工作:
SELECT table_name, column_name, x.constraint_name, constraint_type
FROM (SELECT a.table_name, a.column_name, a.constraint_name
FROM all_cons_columns a
WHERE a.owner = '[my_user]'
AND a.table_name NOT LIKE 'APEX%'
AND a.constraint_name NOT LIKE 'BIN%'
ORDER BY a.table_name) x
LEFT JOIN (SELECT b.constraint_name, b.constraint_type
FROM all_constraints b
WHERE b.owner = '[my_user]'
AND b.table_name NOT LIKE 'APEX%'
AND b.constraint_name NOT LIKE 'BIN%'
ORDER BY b.constraint_name) y
ON x.constraint_name = y.constraint_name
但我想这个查询可能更短并且没有左连接,因为它总是匹配:
select x.table_name,
x.column_name,
x.constraint_name,
y.constraint_type
from all_cons_columns x
join all_constraints y
on x.constraint_name = y.constraint_name
where x.owner = '[my_user]'
and x.owner = y.owner
and x.table_name NOT LIKE 'APEX%'
and x.constraint_name NOT LIKE 'BIN%'
order by x.table_name, x.constraint_name
推荐阅读
- javascript - 我无法让特定的“按钮”打开特定的 youtube“iframe”
- git - 共享 github 共同开发(只有 2 个用户)会产生无法解决的推/拉冲突
- twilio - 将呼叫者重定向到代理号码
- python-3.x - 关于KNN参数K值
- excel - Excel:使用 IF、ISNUMBER、SEARCH 进行文本挖掘
- python - 在 Python 中的同一对象上运行两个与计时器相关的函数的问题
- html - 如何使表单提交在移动设备上工作?
- bixby - 在播放音频时添加额外的视图或布局
- python - 递归语句的问题
- machine-learning - ReLU 权重初始化?