php - 友谊表的MYSQL JOIN QUERY

标签 php mysql join

我有以下两张表

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/

相关文章:

php - Laravel 在线购物车

php - 打印订阅还剩多少天?

python - 树莓派发送数据到XAMPP数据库

MySQL 多次左连接

javascript - onclick 事件作用于特定按钮

php - 将 CSS 与变量 php 结合

mysql - 使用来自另一个表的 JOIN 进行更新并获取最新的

mysql - 查找一个月内不同 worker 的数量

hibernate 标准 API : Joining tables with custom join

c++ - 自终止线程。使用连接或分离