gpt4 book ai didi

MySQL 左连接与存在子查询返回的行数超出应有的行数

转载 作者:行者123 更新时间:2023-11-29 10:42:48 25 4
gpt4 key购买 nike

我有一个 MySQL 数据库和带有子查询的 SQL 查询。

我 100% 确定该表 s_k_p只有一行 s_k_p.season_id = 2s_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应该是真的。

最佳答案

如果 S_K_P 表中的 USER 有 10 行,则您的查询返回 10 行可能是正确的,因为这是左连接。

您已达到同一个 S_K_P 表的 SECONDARY 级别,但包括 Season_ID = 2。

如果您关心的只是同一用户是否存在第二季,则更改为

 LEFT JOIN s_k_p AS skp2
ON skp2.user_id = k_i.user_id
AND skp2.season_id = 2

关于MySQL 左连接与存在子查询返回的行数超出应有的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45165102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com