连接来自不同表的 2 列

concatenate 2 columns from different tables

使用下面的查询,我试图从 v$ 数据库中获取 db_unique_name 并结合 DBA_PRIV_AUDIT_OPTS.But 的 PRIVILEGE 列,我收到错误 'ORA-00918:column ambiguously defined'。请 suggest.Thanks.

select db_unique_name||':'||PRIVILEGE DB_NAME_PRIV,PROXY_NAME,PRIVILEGE,SUCCESS,FAILURE from
(SELECT d.PRIVILEGE,d.PROXY_NAME,d.PRIVILEGE,d.SUCCESS,d.FAILURE from DBA_PRIV_AUDIT_OPTS d
where d.PRIVILEGE in ('AUDIT SYSTEM','AUDIT ANY','ALTER SYSTEM','GRANT ANY ROLE','GRANT ANY PRIVILEGE','GRANT ANY OBJECT PRIVILEGE','CREATE USER','ALTER USER','DROP USER')),v$database;

您指定了 d.privilege 两次,所以只删除了额外的一个:

select db_unique_name||':'||PRIVILEGE DB_NAME_PRIV,PROXY_NAME,PRIVILEGE,SUCCESS,FAILURE from
(SELECT d.PRIVILEGE,d.PROXY_NAMEd.SUCCESS,d.FAILURE from DBA_PRIV_AUDIT_OPTS d
where d.PRIVILEGE in ('AUDIT SYSTEM','AUDIT ANY','ALTER SYSTEM','GRANT ANY ROLE','GRANT ANY PRIVILEGE','GRANT ANY OBJECT PRIVILEGE','CREATE USER','ALTER USER','DROP USER')),v$database;

另外,为什么不简单地不用子查询呢?

select db_unique_name||':'||PRIVILEGE DB_NAME_PRIV,PROXY_NAME,PRIVILEGE,SUCCESS,FAILURE 
from DBA_PRIV_AUDIT_OPTS d, v$database
where d.PRIVILEGE in (
         'AUDIT SYSTEM','AUDIT ANY','ALTER SYSTEM'
        ,'GRANT ANY ROLE','GRANT ANY PRIVILEGE'
        ,'GRANT ANY OBJECT PRIVILEGE','CREATE USER'
        ,'ALTER USER','DROP USER'
      );