【问题标题】:SQLite: Splitting multiple selects into different columnsSQLite:将多个选择拆分为不同的列
【发布时间】:2021-11-20 04:25:08
【问题描述】:

我需要在 SQL 中实现以下外观输出:

chair | Secretary | Year
------------------------
Matt  |   Susan   | 2006
Susan |   Joe     | 2005

来自具有表 MembersLeaders 的数据库。表Members 如下所示:

Name  | num
-------------
Matt  |  123
Susan |  456
Joe   |  789

Leaders 如下所示:

Year | Chair | Secretary
-------------------
2006 | 123   |  456
2005 | 456   |  789

到目前为止,我想出了这样的事情:

SELECT * FROM 
    (SELECT m.name FROM Members M, Leaders L
     WHERE M.num = L.secretary
          UNION ALL 
    SELECT m.name FROM MEMBER M, Leaders L WHERE M.num = L.chair
          UNION ALL
    SELECT L.year from Leaders L);

但是,这会将所有想要的参数选择为一列。我的问题是:当它们派生自同一个表时,我如何才能将特别是名称拆分为 ChairSecretary 列?

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    你必须使用ALIAS,可以用AS关键字定义(可以省略)。 ALIAS 可用于表和列,如下例所示:

    SELECT
        ChairMembers.Name AS Chair,
        SecretaryMembers.Name AS Secretary,
        Year
    FROM
        Leaders
    INNER JOIN
        Members AS ChairMembers
    ON
        Leaders.Chair = ChairMembers.num
    INNER JOIN
        Members AS SecretaryMembers
    ON
        Leaders.Secretary = SecretaryMembers.num
    

    更多信息可以阅读this documentation

    【讨论】:

      【解决方案2】:

      在我看来,您可以通过这种方式构建查询:

      SELECT l.year, m1.Name, m2.Name
      FROM leaders l
      INNER JOIN members m1 ON l.chair = m1.num
      INNER JOIN members m2 ON l.secretary = m2.num
      

      你可以找个测试here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-20
        • 2017-07-15
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多