我有一个很好的想法,只是无法理解这一点。
我有一张表(转移),如下所示
id | playerid | old | new | amount
它们都是整数。
我正在加入此表(团队)到以下
id | name | founded
加入将是旧的和新的。
旧的和新的都是整数,我需要团队表中的名字。 是否可以在一个查询中找到这两个名称?
由于
答案 0 :(得分:2)
是的:
SELECT t.id,
t.playerid,
t_old.name old_team,
t_new.name new_team,
t.amount
FROM transfers t
JOIN teams t_old ON (t_old.id = t.old)
JOIN teams t_new ON (t_new.id = t.new);
请注意,JOIN
是INNER JOIN
的同义词。
测试用例:
CREATE TABLE transfers (id int, playerid int, old int, new int, amount int);
CREATE TABLE teams (id int, name varchar(100), founded datetime);
INSERT INTO teams VALUES (1, 'Man Utd', '1900-01-01');
INSERT INTO teams VALUES (2, 'Liverpool', '1890-01-01');
INSERT INTO transfers VALUES (1, 1, 1, 2, 99999999);
结果:
+------+----------+----------+-----------+----------+
| id | playerid | old_team | new_team | amount |
+------+----------+----------+-----------+----------+
| 1 | 1 | Man Utd | Liverpool | 99999999 |
+------+----------+----------+-----------+----------+
1 row in set (0.00 sec)
答案 1 :(得分:0)
请注意,如果你有一个记录,其中new匹配一个entery而old不匹配(反之亦然),内联接将无法匹配。然后使用外连接。但是在转移的情况下,这没有意义。 :)确保new和old不是NULL。