MySQL,如何从第一个表中选择一行,从第二个表中选择两行
我需要从第一个表中选择一行,从第二个表中选择两行,它们对应于第一个表的结果。我可以用例子更清楚地解释它 如下所示,我有两个表。表“游戏”中有关于团队之间游戏的信息(例如,第1场游戏由第10队和第11队进行)。在第二个表中,我只列出了团队的名称。问题是如何使用一个Select从第二个表中获取关于游戏的信息和球队名称 e、 g.我想了解玩NR3游戏的人以及球队名称。结果应该是:MySQL,如何从第一个表中选择一行,从第二个表中选择两行,mysql,select,Mysql,Select,我需要从第一个表中选择一行,从第二个表中选择两行,它们对应于第一个表的结果。我可以用例子更清楚地解释它 如下所示,我有两个表。表“游戏”中有关于团队之间游戏的信息(例如,第1场游戏由第10队和第11队进行)。在第二个表中,我只列出了团队的名称。问题是如何使用一个Select从第二个表中获取关于游戏的信息和球队名称 e、 g.我想了解玩NR3游戏的人以及球队名称。结果应该是: id = 3, team_nr1 = 14, team_nr2 = 15, team1_name = eee, team2
id = 3, team_nr1 = 14, team_nr2 = 15, team1_name = eee, team2_name = fff
有可能吗
Table: Games
________________________
id team_nr1 team_nr2
1 10 11
2 12 13
3 14 15
Table: Teams
________________________
team_id team_name
10 aaa
11 bbb
12 ccc
13 ddd
14 eee
15 fff
谢谢你的建议。你可以试试:-
SELECT ID,
TEAM_NR1,
TEAN_NR2,
(SELECT TEAM_NAME
FROM TEAMS
WHERE TEAMS.TEAM_ID = GAMES.TEAM_NR1) AS TEAM1_NAME,
(SELECT TEAM_NAME
FROM TEAMS
WHERE TEAMS.TEAM_ID = GAMES.TEAM_NR2) AS TEAM2_NAME
FROM GAMES
WHERE GAMES.ID = 3;
子查询选择所需的团队名称并命名它们出现的“列”。如果您只想有一行包含所有值,我唯一能做的就是使用函数。我不建议在内联查询和子查询中使用,因为如果没有找到记录,它将产生mysql错误 我想你应该使用连接。它可能是这样的:
SELECT G.id, G.team_nr1, G.team_nr2,
T1.team_name AS team1_name, T2.team_name AS team2_name
FROM Games G
LEFT JOIN Teams T1 ON (G.team_nr1 = T1.team_id)
LEFT JOIN Teams T2 ON (G.team_nr2 = T2.team_id)
WHERE G.id = 3
还有其他类型的联接LEFT JOIN
表示列出所有游戏,即使在T1
或T2
中没有匹配的团队