Không phải là người hâm mộ lớn của AND/WHERE column = (SELECT column....)
, về mặt tổng thể tốt hơn nên viết AND/WHERE column IN (SELECT column...)
. Nhưng trong trường hợp của bạn, nó không giống như khả năng có nhiều hàng hoặc cột trong truy vấn phụ. Còn về-
var comment_id number
exec :comment_id := 3052753
select e.label as doc_name,
e.url,
i.item_id,
'multi' as form_type
from cr_items i, cr_extlinks e
where i.parent_id = :comment_id
and e.extlink_id = i.item_id
UNION
select null as doc_name,
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(r.content, 2000, 1)) as url,
r.item_id,
'single' as form_type
from cr_revisions r
where r.revision_id IN ( select content_item.get_latest_revision(:comment_id)
from dual);
/
HOẶC
var comment_id number
exec :comment_id := 3052753
select e.label as doc_name,
e.url,
i.item_id,
'multi' as form_type
from cr_items i, cr_extlinks e
where i.parent_id = :comment_id
and e.extlink_id = i.item_id
UNION
select null as doc_name,
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(r.content, 2000, 1)) as url,
r.item_id,
'single' as form_type
from cr_revisions r
where EXISTS (select 'x'
from dual
where content_item.get_latest_revision(:comment_id) =r.revision_id);
/