0
我有一個MySQL數據庫和SQL查詢與子查詢。MySQL左連接存在的子查詢返回比它應該更多的行
我100%確定表s_k_p
只有一行,其中s_k_p.season_id = 2
和s_k_p.user_id = k_i.user_id
。
無論如何,問題是LEFT JOIN s_k_p AS skp2
部分返回10行。如上所述,它應該只返回一行。
SELECT skp2.season_id AS invalid_status_id
FROM comp_i
INNER JOIN k_i ON k_i.ilmo_id = comp_i.id
LEFT JOIN s_k_p
ON s_k_p.user_id = k_i.user_id
AND s_k_p.season_id = 4
LEFT JOIN s_k_p AS skp2
ON skp2.user_id = k_i.user_id
AND EXISTS (
SELECT *
FROM s_k_p
WHERE s_k_p.season_id = 2
AND s_k_p.user_id = k_i.user_id
)
WHERE comp_i.comp_id = ?
ORDER BY k_i.id ASC
表s_k_p具有以下行:
season_id | user_id
1 | 25
1 | 459
2 | 459
3 | 459
3 | 9999
4 | 459
4 | 758
第二行是唯一一所在s_k_p.season_id = 2
和s_k_p.user_id = k_i.user_id
應該是真實的。
編輯您的問題,並提供樣本數據和期望的結果。或者,在SQL Fiddle或Rextester上設置一個示例。 –
我投票支持Rextester :-) –
無論是否有一行或100000行,'EXISTS'都會返回'true'或'false'。您可能希望使用'AND s_k_p.season_id = 2'(與前一個連接相似)。 – dnoeth