找不到从2个不同的表中进行选择的好的解决方案

时间:2019-10-15 14:16:34

标签: php mysql sql join

所以我有这个问题,我需要在同一MySQL查询中从2个不同的表中进行选择,

这是查询:

SELECT * FROM minigame_players WHERE lobby='$game_id'

这很好用,但我希望它也从表permissions中选择users,其中username =下面查询的返回值。例如,假设下面的查询返回值John,那么我想(在同一查询中)从permissions中选择users,其中username = { {1}}-我尝试从多个网站查找它,但是找不到合适的解决方案。

2 个答案:

答案 0 :(得分:0)

您正在寻找简单的JOIN

SELECT mg.username, us.role 
FROM minigame_players mg
INNER JOIN users us ON us.username = mg.username 
WHERE mg.lobby= :game_id

注意:始终使用准备好的语句和参数化查询。考虑this famous SO post以获得更多详细信息。

答案 1 :(得分:-3)

使用像这样的子查询可能会有所帮助,如果您映射了这些表,我建议您也使用mysql JOIN。

您也可以使用UNION,但是这些表中的列数应该相同。

SELECT  (
  SELECT *
  FROM permissions
  where user = ?
 ) AS permission,
 (
  SELECT * 
  FROM minigame_players 
  WHERE lobby = ?
 ) AS player
)

使用准备好的语句来防止SQL注入。