简体   繁体   English

连接来自不同表的 2 列

[英]concatenate 2 columns from different tables

Using the below query i am trying to get the db_unique_name from v$database combined with the PRIVILEGE column of DBA_PRIV_AUDIT_OPTS.But i am getting the error 'ORA-00918:column ambiguously defined'.Please suggest.Thanks.使用以下查询,我试图从 v$database 中获取 db_unique_name 与 DBA_PRIV_AUDIT_OPTS 的 PRIVILEGE 列相结合。

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;

You specified d.privilege twice, so just removed extra one:您指定了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;

Also why not simply without subquery?另外为什么不简单地没有子查询?

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'
      );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM