首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >友好表的MYSQL JOIN查询

友好表的MYSQL JOIN查询
EN

Stack Overflow用户
提问于 2012-01-07 00:04:35
回答 2查看 159关注 0票数 0

我有以下两个表

代码语言:javascript
复制
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
);

我这样建立了一个连接查询:

代码语言:javascript
复制
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;

它看起来像这样:

Mike Fenway |1|3|

吉姆·莫里森|3|1|

问题是我如何显示朋友的名字,使结果如下所示:

迈克·芬威|1|吉姆·莫里森|3|

吉姆·莫里森|3|迈克·芬威|1|

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-07 00:09:19

您需要执行进一步的连接以获取好友数据。我使用LEFT JOIN总是退还账号,即使没有朋友也是如此。INNER JOIN将只返回有朋友的帐户,而忽略没有朋友的帐户。

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2012-01-07 00:23:06

代码语言:javascript
复制
SELECT
    MainAccount.Name as OwnerName,
    MainAccount.ID as OwnerID,
    COALESCE(AnotherMain.Name, '') as FriendName
    COALESCE(Friends.ID, '')  as FriendID
FROM
    Accounts as MainAccount 
        LEFT JOIN Friends ON
            MainAccount.ID = Friends.ID
        LEFT JOIN Accounts as AnotherMain ON
            Friends.ID = AnotherMain.ID
ORDER BY MainAccount.Name LIMIT 10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8760697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档