在同一个sql连接中获取2个不同的记录行

Posted

技术标签:

【中文标题】在同一个sql连接中获取2个不同的记录行【英文标题】:Getting 2 different records rows in the same sql join 【发布时间】:2014-05-16 23:27:10 【问题描述】:

我有 2 张桌子:

用户

id_user 姓名 图片网址

匹配

id_match 日期匹配 id_user_winner id_user_loser

查询应该为我提供 users.id_user=3 获胜的匹配列表。问题是查询应该同时带来获胜者和失败者的姓名和图片网址。

货币查询是:

SELECT u.name, u.picture_url, m.id_user_winner, m.id_user_loser, m.date_match FROM matches AS m
INNER JOIN users AS u ON u.id_user = m.id_user_winner WHERE u.id_user = 3

但这只会让我知道获胜者的姓名和照片。我还需要失败者的姓名和照片。有任何想法吗?谢谢!

【问题讨论】:

【参考方案1】:
SELECT u.name
     , u.picture_url
     , m.id_user_winner
     , m.id_user_loser
     , e.name
     , e.picture_url
     , m.date_match 
FROM matches m JOIN users u ON u.id_user = m.id_user_winner AND u.id_user = 3
               JOIN users e ON e.id_user = m.id_user_loser

【讨论】:

完美解决。只是一个简单的问题:在 JOIN 中添加 u.id_user = 3 而不是将其放入 WERE 子句有什么好处? @andufo : 对于INNER JOIN(显式和隐式JOIN 在这里是两者的组合)并不重要,但对于其他类型,您可以阅读它here 跨度>

以上是关于在同一个sql连接中获取2个不同的记录行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 计算行数和左连接问题

SQL中的左连接与右连接,内连接有什么不同

SQL存储过程获取所有往年记录的连接字符串

复杂的 SQL 连接查询 - 获取最新行

sql查询:使用内连接查询两张表的时候,如果左边表的一条记录对应了右边表的两条记录,结果显示排列问题

db2 怎样查一个sql连接执行过的所有语句?