【问题标题】:Inner Join SQL table multiple times for the same table同一张表多次内联SQL表
【发布时间】:2020-08-30 18:37:57
【问题描述】:

我有两个表(msg 和 users)。我正在尝试将这两个表连接在一起,并打印出发送者和接收者的名字和姓氏以及所有消息内容(如果消息被标记为标志)。但我不断收到错误,但还没有找到一个好的方法来做到这一点。

供参考的表格图片: https://imgur.com/a/wYuptfR

我现在使用的 SQL 查询:

SELECT msg.*, users.uuid AS users.ruuid, users.uuid AS users.suuid, users.firstName, users.lastName
FROM msg
 INNER JOIN users ON users.ruuid = msg.recipient
 AND INNER JOIN users ON users.suuid = msg.sender 
WHERE msg.flag = 0

【问题讨论】:

  • 你需要不同的表别名。
  • 删除“AND”...
  • 您介意给我更多信息吗?我不知道我是否明白你的意思。我是 SQL 新手,所以我还在学习中
  • @LasseEdsvik 我试过了,我收到错误 #1064
  • 请问你想要什么预期的结果??

标签: mysql sql join select


【解决方案1】:

如果您使用不同的别名,您可以多次查询同一个表。另外,请注意,两个 join 子句之间不应有 and

SELECT     msg.*, 
           r.uuid AS ruuid, r.firstName AS rfirstname, r.lastName AS rlastname,
           s.uuid AS suuid, s.firstName AS sfirstname, s.lastName AS slastname
FROM       msg
INNER JOIN users r ON r.uuid = msg.recipient
INNER JOIN users s ON s.uuid = msg.sender 
WHERE      msg.flag = 0

【讨论】:

  • 这不会获取发件人的名字和姓氏,只获取收件人。
  • @Trae 好点。编辑了我的答案并将它们添加到选择列表中
  • 我尝试了这个并得到了大量的错误转储:imgur.com/a/E3pDM6H
  • @Trae 有一个多余的逗号,对此感到抱歉。已编辑和修复。
【解决方案2】:

试试这个

SELECT msg.*, u.uuid , u.firstName, u.lastName, s.uuid , s.firstName, s.lastName
FROM msg
INNER JOIN users u ON u.uuid = msg.recipient
INNER JOIN users s ON s.uuid = msg.sender
WHERE      msg.flag = 0

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 2018-07-21
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2018-11-25
    相关资源
    最近更新 更多