[英]MySQL - Left Join + Group by not working as expected
所以,
我一次又一次地使用 LEFT JOIN,直到現在我從未遇到過問題,我終生無法解決它! 請看一下。
這是我正在使用的表中的數據片段。 ——
ITEM_NO R_TYPE POS
394392 BT1 POS1
394392 BT1 POS1
394392 BT1 POS1
394392 BT1 POS1
394392 BT1 POS1
394392 BT2 POS2
394392 BT2 POS2
394392 BT2 POS2
394397 BT1 POS1
394397 BT1 POS1
394397 BT1 POS3
394397 BT1 POS3
394397 BT1 POS2
394397 BT2 POS2
394397 BT2 POS1
394397 BT2 POS1
394444 BT3 POS1
我正在嘗試運行左連接查詢來計算具有特定POS條件的不同項目編號,並最終按R_TYPE對它們進行分組
Here is the SQL I have tried -
SELECT * FROM
( SELECT COUNT(DISTINCT ITEM_NO) AS CNT1, R_TYPE,
FROM LIVE_ITEMS WHERE AND R_TYPE LIKE 'BT%' AND
POS NOT IN ('POS8') ) J1
LEFT JOIN
( SELECT COUNT(DISTINCT ITEM_NO) AS CNT2, R_TYPE,
FROM LIVE_ITEMS WHERE AND R_TYPE LIKE 'BT%' AND
POS IN ('POS1','POS2','POS3') ) J2
ON J1.R_TYPE= J2.R_TYPE
GROUP BY J1.R_TYPE
如果我運行這個 sql,我會得到以下結果 -
CNT1 R_TYPE CNT2 R_TYPE
137 BT1 137 BT1
這不是我想要的,我期待以下並且不明白為什么..
預期數據 -
CNT1 R_TYPE CNT2 R_TYPE
137 BT1 137 BT1
45 BT2 76 BT2
98 BT3 102 BT3
有什么建議嗎?
更正了您的查詢。 請檢查。
SELECT * FROM
( SELECT COUNT(DISTINCT a.ITEM_NO) AS CNT1, a.R_TYPE
FROM LIVE_ITEMS a
WHERE a.R_TYPE LIKE 'BT%'
AND a.POS NOT IN ('POS8')
GROUP BY a.R_TYPE ) J1
LEFT JOIN
( SELECT COUNT(DISTINCT b.ITEM_NO) AS CNT2, b.R_TYPE
FROM LIVE_ITEMS b
WHERE b.R_TYPE LIKE 'BT%'
AND b.POS IN ('POS1','POS2','POS3')
GROUP BY b.R_TYPE) J2
ON J1.R_TYPE= J2.R_TYPE
GROUP BY J1.R_TYPE
如果沒有 GROUP BY,則只有一個組,並且不確定為該組選擇哪個值
SELECT * FROM
( SELECT COUNT(DISTINCT LIVE_ITEMS.ITEM_NO) AS CNT1, LIVE_ITEMS.R_TYPE,
FROM LIVE_ITEMS WHERE LIVE_ITEMS.R_TYPE LIKE 'BT%' AND
LIVE_ITEMS.POS NOT IN ('POS8') GROUP BY LIVE_ITEMS.R_TYPE) J1
LEFT JOIN
( SELECT COUNT(DISTINCT LIVE_ITEMS.ITEM_NO) AS CNT2, LIVE_ITEMS.R_TYPE,
FROM LIVE_ITEMS WHERE LIVE_ITEMS.R_TYPE LIKE 'BT%' AND
LIVE_ITEMS.POS IN ('POS1','POS2','POS3') GROUP BY LIVE_ITEMS.R_TYPE) J2
AND J1.R_TYPE= J2.R_TYPE
GROUP BY J1.R_TYPE
沒有 Group by COUNT(DISTINCT ITEM_NO)
總是給出一個結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.