gpt4 book ai didi

php - SQL 多重连接不起作用

转载 作者:行者123 更新时间:2023-11-29 01:40:49 25 4
gpt4 key购买 nike

我有这个:

SELECT user_games.APPID, games_steam.name, games_xbox.name
FROM user_games
JOIN games_steam ON user_games.APPID = games_steam.APPID
JOIN games_xbox ON user_games.APPID = games_xbox.APPID
WHERE user_games.UID = "76561197996836099"
GROUP BY user_games.APPID

但它不返回任何内容,但是如果我删除其中一个连接及其相应的 SELECT,它们都可以正常工作。有谁知道这是为什么吗?

最佳答案

返回的行必须满足查询的所有条件

  • 如果您只采用第一个 JOIN,您将获得 APPID 所在的所有行火柴user_gamesgames_steam
  • 如果您只采用第二个 JOIN,您将获得 APPID 所在的所有行火柴user_gamesgames_xbox
  • 但是,如果您包括两个 JOIN,您将只获得包含APPID 的行。火柴user_games到两个games_steam games_xbox .虽然可能存在这样的行,但决不能由前两个查询中的行的存在来保证。

最简单的解决方案是同时转换 JOIN s 至 LEFT JOIN s(严格来说,将 INNER JOIN 转换为 LEFT OUTER JOIN s,但 INNEROUTER 是可选关键字)。这会导致不会过滤掉任何行,但您的结果将包含以下内容:

  • APPID 所在的行匹配 games_steam games_xbox , 包含两场比赛的详细信息
  • APPID 所在的行火柴games_steam ,详细信息来自 games_xbox所有NULL
  • APPID 所在的行火柴games_xbox ,详细信息来自 games_steam所有NULL
  • APPID 所在的行匹配 两者 表,详细信息来自 games_steam games_xbox所有NULL

您当然可以使用适当的 WHERE 消除其中任何一种情况子句,例如WHERE ... AND (games_steam.APPID IS NOT NULL OR games_xbox.APPID IS NOT NULL) .

但是,您可能还想考虑这是否真的是您希望合并结果的方式 - 即使用不同的连接添加列,而不是运行两个单独的查询并让它们添加行。

关于php - SQL 多重连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464386/

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