连接来自不同表的 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'
);
使用下面的查询,我试图从 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'
);