所以我有这个问题,我需要在同一MySQL查询中从2个不同的表中进行选择,
这是查询:
SELECT * FROM minigame_players WHERE lobby='$game_id'
这很好用,但我希望它也从表permissions
中选择users
,其中username
=下面查询的返回值。例如,假设下面的查询返回值John
,那么我想(在同一查询中)从permissions
中选择users
,其中username
= { {1}}-我尝试从多个网站查找它,但是找不到合适的解决方案。
答案 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注入。