我对以下 SQL 有疑问。为什么地球上减去 2 个完全相同的查询会返回非空结果?我尝试过“UNION ALL”而不是 UNION,我尝试了很多其他的东西,但都没有奏效。请指教。
SELECT y.segment1 po_num, fad.seq_num seq, fdst.short_text st
FROM applsys.fnd_attached_documents fad,
applsys.fnd_documents fd,
applsys.fnd_documents_short_text fdst,
po_headers_all y
WHERE 1 = 1
AND fad.pk1_value(+) = y.po_header_id
AND fad.entity_name = 'PO_HEADERS'
AND fad.document_id = fd.document_id
AND fd.datatype_id = 1
and fad.seq_num>=100
AND fdst.media_id = fd.media_id
and y.type_lookup_code='STANDARD'
AND NVL(y.CANCEL_FLAG,'N')='N'
-- and y.segment1 in (100,1000,100,650,26268)
-- and y.segment1=1000
UNION
SELECT poh.segment1, 1, '1' --null, null
FROM po.po_headers_all poh
LEFT JOIN
(SELECT fad1.pk1_value
FROM applsys.fnd_attached_documents fad1,
applsys.fnd_documents fd1
WHERE 1 = 1
AND fad1.entity_name = 'PO_HEADERS'
AND fad1.document_id = fd1.document_id
and fad1.seq_num>=100
AND fd1.datatype_id = 1) sub1
ON poh.po_header_id = sub1.pk1_value
WHERE sub1.pk1_value IS NULL
and poh.type_lookup_code='STANDARD'
AND NVL(poh.CANCEL_FLAG,'N')='N'
-- and poh.segment1 in (100,1000,100,650,26268)
-- and poh.segment1=1000
-- and poh.segment1=650)
minus
SELECT y.segment1 po_num, fad.seq_num seq, fdst.short_text st
FROM applsys.fnd_attached_documents fad,
applsys.fnd_documents fd,
applsys.fnd_documents_short_text fdst,
po_headers_all y
WHERE 1 = 1
AND fad.pk1_value(+) = y.po_header_id
AND fad.entity_name = 'PO_HEADERS'
AND fad.document_id = fd.document_id
AND fd.datatype_id = 1
and fad.seq_num>=100
AND fdst.media_id = fd.media_id
and y.type_lookup_code='STANDARD'
AND NVL(y.CANCEL_FLAG,'N')='N'
--and y.segment1 in (100,1000,100,650,26268)
--and y.segment1=1000
UNION
SELECT poh.segment1, 1, '1'--null,null
FROM po.po_headers_all poh
LEFT JOIN
(SELECT fad1.pk1_value
FROM applsys.fnd_attached_documents fad1,
applsys.fnd_documents fd1
WHERE 1 = 1
AND fad1.entity_name = 'PO_HEADERS'
AND fad1.document_id = fd1.document_id
and fad1.seq_num>=100
AND fd1.datatype_id = 1) sub1
ON poh.po_header_id = sub1.pk1_value
WHERE sub1.pk1_value IS NULL
and poh.type_lookup_code='STANDARD'
AND NVL(poh.CANCEL_FLAG,'N')='N'
-- and poh.segment1 in (100,1000,100,650,26268)
-- and poh.segment1=1000
-- and poh.segment1=650)