簡體   English   中英

選擇聯接表中唯一存在的記錄1

[英]Select records where the only exist 1 in a joined table

我有以下查詢:

SELECT 
    A.POSTCARD_ID, A.STAMP_ID, B.END_DT
FROM
    PST_VS_STAMP A
JOIN 
    STAMP B ON A.POSTCARD_ID = B.POSTCARD_ID
WHERE 
    B.ACCOUNT LIKE 'AA%'
    AND B.END_DT = '9999-12-31'
GROUP BY 
    A.POSTCARD_ID, A.STAMP_ID, B.END_DT
HAVING 
    COUNT(A.POSTCARD_ID) < 2

但是我得到了錯誤的結果。

我只希望在PST_VS_STAMP表中有1條記錄( HAVING < 2 )的明信片ID。 我該如何查詢?

僅在要查詢一行的表上進行子查詢中的匯總。 因為只有一行,所以您可以使用聚合函數提取任何列的值(因為一行min(col)是該列的值):

select s.postcard_id, vs.stamp_id, s.end_dt
from stamp s join
     (select vs.postcard_id, min(stamp_id) as stamp_id
      from pst_vs_stamp vs
      group by vs.postcard_id
      having count(*) = 1
     ) s
     on vs.POSTCARD_ID = s.POSTCARD_ID
where s.ACCOUNT like 'AA%' and s.END_DT = '9999-12-31';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM