![](/img/trans.png)
[英]How to select from joined table with WHERE clause only when value exist?
[英]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.