【问题标题】:SQL order by a column from another table另一个表中的列的 SQL 顺序
【发布时间】:2009-11-26 20:54:38
【问题描述】:

我有 3 个表:人员、组和成员。 Memberships 是人员和组之间的连接表,有 3 列:personId、groupId 和 description(文本)。

我想根据 groupId 从成员资格表中选择条目,但按与找到的成员资格相关联的人员名称对结果进行排序(名称是人员表的列)

SELECT * FROM "memberships" WHERE ("memberships".groupId = 32) ORDER BY (?????)

是否有可能在一个查询中实现这一点?

【问题讨论】:

    标签: sql sql-order-by


    【解决方案1】:

    加入 people 表,然后按所需字段排序。

    SELECT
      m.* 
    FROM 
      "memberships" AS m
      JOIN "people" AS p on p.personid = m.personID
    WHERE
      m.groupId = 32
    ORDER BY 
      p.name
    

    【讨论】:

    • 一些 SQL 数据服务器坚持只按选定数据排序 - 在这种情况下,您必须将 p.name 添加到选定数据。
    【解决方案2】:
    SELECT *
    FROM Membership AS m
         JOIN People as p ON p.personID = m.personID
    WHERE m.groupID = 32
    ORDER BY p.name
    

    【讨论】:

    • 看来他只想要会员表中的信息,所以也许是“SELECT m.* ...如上...”?然后取决于SQL数据服务器是否可以按非选定列排序;如果不是,则返回的数据必须包含 p.name。
    【解决方案3】:
    SELECT
          M.* ,
          P.Name AS PersonName
    FROM 
          Memberships AS m
    INNER  JOIN 
          People AS P ON P.PersonID = M.PersonID
    WHERE
          M.GroupID = 32
    ORDER BY 
          PersonName
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2014-03-23
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      相关资源
      最近更新 更多