我有以下两张表
CREATE TABLE accounts (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
CREATE TABLE friends (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
account_id INTEGER UNSIGNED NOT NULL,
friend_id INTEGER UNSIGNED NOT NULL,
created_on TIMESTAMP NOT NULL
);
我建立了一个 JOIN 查询,如下所示:
SELECT accounts.name, accounts.id, friends.account_id FROM accounts
RIGHT JOIN friends ON accounts.id = friends.account_id
ORDER BY accounts.name LIMIT 10;
它看起来像:
迈克·芬威 | 1 | 3 |
吉姆·莫里森 | 3 | 1 |
问题是如何显示 friend 的姓名,以便结果显示如下:
迈克·芬威 | 1 |吉姆·莫里森 | 3 |
吉姆·莫里森 | 3 |迈克·芬威 | 1 |
最佳答案
您需要执行进一步的加入才能获取好友数据。我已经使用LEFT JOIN
来始终返回帐户,即使没有 friend 。 INNER JOIN
将仅返回有 friend 的帐户,并忽略没有 friend 的帐户。
SELECT A.id, A.name, ACC.id `friendId`, ACC.name `friendName`
FROM accounts A
LEFT JOIN friends F ON A.id = F.account_id
LEFT JOIN accounts ACC ON F.friend_id = ACC.id
ORDER BY A.name LIMIT 10;
关于php - 友谊表的MYSQL JOIN QUERY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8760697/