【问题标题】:Mysql database selecting with relationMysql数据库选择关系
【发布时间】:2012-12-15 13:10:32
【问题描述】:

我有这张表,我为我的 msn 应用程序保存用户列表。还有一张友谊表,它有两个来自用户列表的外键。

用户:id、姓名、在线、ip... 朋友:id1,id2

我想要特定 id 为好友的用户的信息。

我正在使用这个 sql 查询:

SELECT (latest_ip, email, online, pass, status) 
from im.user JOIN im.friend ON user.id = friend.id1 
WHERE user.id = 5

我错过了什么?

【问题讨论】:

  • 哦,mysql 错误:错误代码:1241:操作数应包含 1 列
  • 您缺少有关您的问题的一些信息,(1) 执行查询时会得到什么? (2) 你能显示具有所需输出的示例记录吗?
  • 朋友表包含了关于哪个 id 与谁成为朋友的信息。它就像 id 5 的朋友和 id 12。我在这里看到的问题是 id 5 可能有不止一个朋友,所以 WHERE 部分包含多于一个 id。我想做的是检查朋友表中 id 为 5 的朋友,获取这些 id 并在用户表上查询它们以获取其他信息,如姓名、最新 ip 等。
  • 我也在使用这个执行类似的查询: SELECT (latest_ip, email, online, pass, status) from im.user WHERE user.id = (SELECT id2 from im.friend WHERE id1 = 5)但问题是一样的,第二个查询可能会返回一个以上的 id

标签: mysql sql select relation


【解决方案1】:

删除您的 select 子句中的 parenthesis,您不需要它们

SELECT latest_ip, email, online, pass, status
from   im.user 
       INNER JOIN im.friend 
           ON user.id = friend.id1 
WHERE user.id = 5

更新 1

您需要再次与表user进行额外的连接,因为您想获取用户朋友的信息。

SELECT  c.*
from    im.user a
        INNER JOIN im.friend b
            ON a.id = b.id1 
        INNER JOIN im.user c
            ON b.id2 = c.id
WHERE   a.id = 5

【讨论】:

  • 哦,好吧。谢谢您的帮助。我写的第一个查询似乎不起作用,但是当我删除括号时,带有子查询的第二个查询似乎起作用了。再次感谢您的帮助:)
猜你喜欢
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2011-09-24
相关资源
最近更新 更多