用两列相等的sql列一个表

gv8xihay  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(178)

我有下表:

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。

hivapdat

hivapdat1#

你可以用 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

相关问题