【问题标题】:SQL displaying data from one table based on id from another tableSQL 根据另一个表的 id 显示一个表中的数据
【发布时间】:2018-08-30 09:04:46
【问题描述】:

我是 SQL 新手,在创建 SQL 时需要帮助。

我有 2 张桌子:

表 1:

table2:

现在我想要一个用户示例的所有朋友的名字和姓氏,例如用户 John Doe 基于来自用户的 ID 和来自表朋友的朋友用户 ID?

【问题讨论】:

  • 大多数人更喜欢文字而不是图像,请标记您的数据库
  • 是mysql还是t-sql?
  • 正如@BHouse 所说,请don't post images of text
  • mysql,Ezequiel López Petrucci 的解决方案奏效了
  • 问题中“friends”的拼写和表格中的“firends”拼写不一致。

标签: mysql sql sql-server tsql


【解决方案1】:

一个简单的内部连接就可以了

Select First_name,Last_name 
from user inner join friends on user.id = friends.user_id
where friends.id = 1

如果您想查看user_id 列,也可以替换为friends.user_id = 1

【讨论】:

    【解决方案2】:

    您应该进行 2 次联接,一次获取每个朋友的 ID,另一次检索该朋友的姓名。

    SELECT
        U.ID,
        U.first_name,
        U.last_name,
        N.first_name FriendFirstName,
        N.last_name FriendLastName
    FROM
        [user] U
        LEFT JOIN firends F ON U.ID = F.user_id
        LEFT JOIN [user] N ON F.friend_id = N.id
    

    使用LEFT JOIN 会让你看到没有朋友的人(嗅探)。

    如果您想查看特定用户:

    SELECT
        U.ID,
        U.first_name,
        U.last_name,
        N.first_name FriendFirstName,
        N.last_name FriendLastName
    FROM
        [user] U
        LEFT JOIN firends F ON U.ID = F.user_id
        LEFT JOIN [user] N ON F.friend_id = N.id
    WHERE
        U.ID = 1948 -- Supplied ID
    

    【讨论】:

    • 我看到你发现这张桌子被称为“朋友”
    【解决方案3】:

    做自我joins

    select f.first_name, u.first_name as friend_name 
    from user u 
    join (
           select u.first_name, f.friend_id 
           from friend f
           join user u on u.id = f.user_id
    ) f on f.friend_id = u.id
    

    【讨论】:

      【解决方案4】:

      也许我弄错了,但这是我的建议:

          SELECT 
                  u1.first_name,
                  u1.last_name,
                  u2.first_name AS FriendFirstName,
                  u2.last_name AS FriendLastName,                
          FROM user AS u1
          INNER JOIN friends AS f
              ON t1.id = f.user_id
          INNER JOIN user AS u2
              ON f.friend_id = u2.id
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多