Oracle 获取没有特定列的表名

Oracle 获取没有特定列的表名,oracle,Oracle,我必须列出没有特定列的表名(在oracle中)。 有什么建议吗 问候,, 萨钦你可以试试 SELECT ut.table_name FROM user_tables ut WHERE NOT EXISTS (SELECT 1 FROM user_tab_columns utc WHERE utc.table_name = ut.table_name AND utc.column

我必须列出没有特定列的表名(在oracle中)。 有什么建议吗

问候,, 萨钦

你可以试试

SELECT ut.table_name
FROM   user_tables ut
WHERE  NOT EXISTS
          (SELECT 1
           FROM   user_tab_columns utc
           WHERE      utc.table_name = ut.table_name
                  AND utc.column_name = 'your_column')
它将只在您当前使用的模式中进行检查。 您可以将其更改为ALL_uu视图,但是您很可能需要过滤掉模式所有者,例如'SYS',SYSTEM',MDSYS',等等。
@Kacper的答案可能在大多数情况下都适合您。这一个可能会更快,因为它在理论上可以使用索引,但我没有检查,这可能取决于您希望限制查询的内容。

将其更改为用户视图,它应该是正确的。从所有视图中选择时,最好包括所有者,为了避免多个模式中同名的不同表混淆结果。非常感谢。它帮助我加快了我的任务。抱歉延迟回复,不客气。我使用了all_uu而不是user_uu,因为在这个问题中并没有提到只需要用户表或all表。但如果您只需要注释中提到的表,请使用用户表。
SELECT ut.table_name
FROM   user_tables ut
WHERE  NOT EXISTS
          (SELECT 1
           FROM   user_tab_columns utc
           WHERE      utc.table_name = ut.table_name
                  AND utc.column_name = 'your_column')