Oracle SQL如何找出哪个表有以下两列?

Oh *_*oon 5 sql oracle

我知道一个声明,我可以发布以找出我正在寻找的列的表:

SELECT DISTINCT(table_name)
  FROM all_tab_cols 
 WHERE column_name = 'EMP_ID';
Run Code Online (Sandbox Code Playgroud)

但是,我应该如何修改这个以便我可以找到既有说EMP_ID又有的表EMP_NAME

OMG*_*ies 11

使用:

  SELECT table_name
    FROM all_tab_cols 
   WHERE column_name IN ('EMP_ID', 'EMP_NAME')
GROUP BY table_name
  HAVING COUNT(DISTINCT column_name) = 2
Run Code Online (Sandbox Code Playgroud)

计数比较必须等于IN子句中定义的参数数量.

...但这是一种更安全的方法来确定表格,以防它们是重复的:

  SELECT table_name
    FROM all_tab_cols 
   WHERE column_name IN ('EMP_ID', 'EMP_NAME')
GROUP BY table_name, owner
  HAVING COUNT(column_name) = 2
Run Code Online (Sandbox Code Playgroud)

  • 在这里你还必须采取“所有者”条件...否则它会给出错误的答案... (2认同)
  • 在所有大型项目中,您必须在不同的不同模式中工作,这就是为什么我要求您也将所有者条件放在这里......好吧,在一个模式中 test_1 表有一个列名称 EMP_ID 但没有 EMP_NAME,而在其他模式中它只有 EMP_NAME.. 也请考虑一下.. 这个查询也会给出 test_1.. :) (2认同)