【问题标题】:SQL command not properly ended - errors in SQL querySQL 命令未正确结束 - SQL 查询中的错误
【发布时间】:2021-08-27 23:09:26
【问题描述】:

任何人都可以帮忙,因为我遇到了一个错误:

“SQL 命令未正确结束”

下面是SQL代码:

SELECT 
c.column_name,
c.Table_name
FROM ALL_TAB_COLUMNS c
WHERE UPPER(COLUMN_NAME) LIKE '%xyt%'
AND OWNER NOT LIKE '%ytr%'
AND OWNER <> 'SYS'
ORDER BY 1,2,3
INNER JOIN
(SELECT column_name
FROM ALL_TAB_COLUMNS
GROUP BY column_Name
HAVING count(*)>1
)dupes
ON (dupes.coulmn_name = c.column_name);

【问题讨论】:

  • edit您的帖子,使其不仅仅是代码转储,并努力格式化代码以使其可读。您可以通过单击帖子编辑器工具栏右上角的? 图标来获取格式化帮助。

标签: database oracle schema info


【解决方案1】:

joins 应该在 where 子句之前使用。您在选择中只有 2 列,因此 order by 将只有 1,2。 你的查询应该是这样的:

SELECT c.column_name, c.Table_name 
FROM ALL_TAB_COLUMNS c 
inner join (
            select column_name FROM ALL_TAB_COLUMNS group by column_Name having count(*)>1 
        )dupes on (dupes.coulmn_name = c.column_name)
WHERE UPPER(c.COLUMN_NAME) LIKE '%xyt%' AND OWNER NOT LIKE '%ytr%' AND OWNER <> 'SYS' 
ORDER BY 1,2 ;

【讨论】:

  • 收到此错误 "ORA-00904: "DUPES"."COULMN_NAME": invalid identifier 00904. 00000 - "%s: invalid identifier" *原因:*操作:第 5 行错误:第 5 列: 20"
【解决方案2】:

您可以使用以下查询来获得相同的输出:

SELECT c.column_name, c.Table_name 
FROM ALL_TAB_COLUMNS c ,( select b.column_name FROM ALL_TAB_COLUMNS b group by b.column_Name having count(*)>1 ) d
WHERE d.column_name = c.column_name
and UPPER(c.COLUMN_NAME) LIKE '%xyt%' 
AND OWNER NOT LIKE '%ytr%' 
AND OWNER <> 'SYS' 
ORDER BY 1,2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多