gpt4 book ai didi

mysql - 更改 SQL 查询中行的顺序

转载 作者:行者123 更新时间:2023-11-28 23:14:54 27 4
gpt4 key购买 nike

我有一个这样的表(这里是一个简化版本):

create table t(
id integer primary key auto_increment,
room varchar(10),
kind char(1),
value double
);

insert into t(room,kind,value) values
('009','T',23),
('009','H',35),
('All','P',740),
('008','T',22),
('008','H',35),
('106','T',22),
('106','H',38),
('006','H',40),
('006','T',25),
('All','P',740);

当我选择 roomkind 时,它会按照出现的顺序给我行:

select distinct room, kind from t;

| room | kind |
|------|------|
| 009 | T |
| 009 | H |
| All | P |
| 008 | T |
| 008 | H |
| 106 | T |
| 106 | H |
| 006 | H |
| 006 | T |

我希望结果是这样的:

|  room  | kind |
|--------|------|
| room1 | T |
| room1 | H |
| room2 | T |
| room2 | H |
................
| All | P | <-- this should be the last row

即每个房间都应该有一种“T”然后是“H”,最后一行应该有 room='All'。不进行复杂的查询是否可以做到?

最佳答案

我认为您只是在寻找order by:

select distinct room, kind
from t
order by (room = 'All') asc, -- put 'All' last
room, kind desc;

为什么会这样? MySQL 将 bool 表达式(例如 (room = 'All'))视为数字,1 表示真,0 表示假。因此,“真”值排在“假”值之后。

注意:您的数据似乎没有包含重复值 room/kind 的行。如果没有重复项,则使用 select 而不是 select distinct

关于mysql - 更改 SQL 查询中行的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com