首页 > 解决方案 > 通过 2 列相等的 sql 列出一个表

问题描述

我有下表:

Table: reservations
|  name   |  phone_nr  | progam | #invited_people | invitedby |
---------------------------------------------------------------
| Dustin  |  5555555   |   1    |        3        |   NULL    |
|   Joe   |   NULL     |   1    |        0        |  Dustin   |
|   Mary  |   NULL     |   1    |        0        |  Dustin   |
|  Tylor  |   444555   |   1    |        1        |   NULL    |
|   Cody  |   NULL     |   1    |        0        |   Tylor   |
|  Martin |   NULL     |   1    |        0        |  Dustin   |

我想把结果排在预订人之后(invitedby == NULL) 发出邀请的人应该排在最前面,被这个人邀请的人应该在后面。

期望的输出:

Table: reservations
|  name   |  phone_nr  | progam | #invited_people | invitedby |
---------------------------------------------------------------
| Dustin  |  5555555   |   1    |        3        |   NULL    |
|   Joe   |   NULL     |   1    |        0        |  Dustin   |
|   Mary  |   NULL     |   1    |        0        |  Dustin   |
|  Martin |   NULL     |   1    |        0        |  Dustin   |
|  Tylor  |   444555   |   1    |        1        |   NULL    |
|   Cody  |   NULL     |   1    |        0        |   Tylor   |

我不太擅长 SQL。我尝试过GROUP BY“name”和“invitedby”列,但没有用。谢谢您的帮助!

创建和插入语句:

CREATE TABLE reservations (
    `name` varchar(255) PRIMARY KEY,
    `phone_nr` varchar(30),
    `program` int NOT NULL,
    `#invited_people` int NOT NULL,
    `invitedby` varchar(255)
);

INSERT INTO reservations (name, phone_nr, program, `#invited_people`, invitedby) VALUES ('Dustin', '5555555', 1, 3, NULL), ('Joe', NULL, 1, 0, 'Dustin'), ('Mary', NULL, 1, 0, 'Dustin'), ('Tylor', 444555, 1, 1, NULL), ('Cody', NULL, 1, 0, 'Tylor'), ('Martin', NULL, 1, 0, 'Dustin')

我尝试过的查询(但没有用): SELECT * FROM reservation GROUP BY name,invitedby

PS:我在本地机器上使用 MariaDB 和 XAMPP。

标签: mysqlsqlgroup-by

解决方案


您可以使用order by

order by coalesce(invitedby, name),   -- groups the inviter and invitees together
         (invitedby is null) desc,    -- puts the inviter first
         name                         -- orders the rest by name

推荐阅读