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

Oracle SQL如何找出哪个表具有以下两列?,sql,oracle,Sql,Oracle,我知道我可以发布一条语句来查找包含我要查找的列的表: SELECT DISTINCT(table_name) FROM all_tab_cols WHERE column_name = 'EMP_ID'; 但是,我应该如何修改它,以便找到同时具有sayEMP\u ID和EMP\u NAME的表?使用: SELECT table_name FROM all_tab_cols WHERE column_name IN ('EMP_ID', 'EMP_NAME') GRO

我知道我可以发布一条语句来查找包含我要查找的列的表:

SELECT DISTINCT(table_name)
  FROM all_tab_cols 
 WHERE column_name = 'EMP_ID';
但是,我应该如何修改它,以便找到同时具有say
EMP\u ID
EMP\u NAME
的表?

使用:

  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
计数比较必须等于
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

在这种情况下,您还必须考虑“所有者”条件。。。否则它会给出错误的ans…在所有的大项目中,你必须在不同的模式下工作,这就是为什么我要求你把所有者条件也放在这里。。。。好的,假设在一个模式中,test_1表有一个列名称EMP_ID,但没有EMP_名称,而在另一个模式中,它只有EMP_名称。。。。再想想这个。。此查询还将提供测试_1:)我同意pratik garg的观点,而且当您添加了所有者时,不需要使用DISTINCT。