gpt4 book ai didi

MySQL 选择内部连接和联合

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:34 24 4
gpt4 key购买 nike

我有这两张表。我有当前玩家 id_player,我想从这个玩家 (id_player) 和他的对手信息中选择所有游戏。当前玩家和对手玩家连接同一个 id_game。或

tables

table game:`id_game` (...)
table game_player:`id_game_player, id_player, id_game`(...)

"give me all separate game info from current player and his opponent and join info for their game (grouped by game)"

结果为:

      +---player game info
game1 |
+---opponent game info

+---player game info
game2 |
+---opponent1 game info

+---player game info
game2 |
+---opponent2 game info

任何人都可以提供我的 MySQL 解决方案吗?

谢谢


编辑:我尝试使用此代码,但我不确定这是最快的方法(WHERE IN),是否有任何方法可以像上面那样对结果进行分组?

SELECT * FROM game_player
JOIN `game` ON game.id_game = game_player.id_game
WHERE game_player.id_game
IN (
SELECT game_player.id_game
FROM `game_player`
WHERE game_player.id_player =2)

最佳答案

试一试

SET @player_ID = 0;                  -- <<== the playerID
SELECT a.*, b.*, 'player' Status -- this is the first part of the union
FROM game a -- which gets all the game of
INNER JOIN game_player b -- the selected player and its info
ON a.id_game = b.id_game
WHERE id_player = @player_ID
UNION ALL
SELECT d.*, c.*, 'opponent' status
FROM game_player c
INNER JOIN
(
SELECT a.*
FROM game aa
INNER JOIN game_player bb
ON aa.id_game = bb.id_game
WHERE bb.id_player = @player_ID
) d ON c.id_game = d.id_game AND c.id_player <> @player_ID
ORDER BY id_game, status

关于MySQL 选择内部连接和联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710107/

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