gpt4 book ai didi

mysql - 在特定列上应用降序获取 MySQL 结果

转载 作者:行者123 更新时间:2023-11-30 21:46:04 27 4
gpt4 key购买 nike

我在 MySQL 中有一个表,列名如下,

---------------------------------------------------------
Sno | Name | Status | Build_01 | Build_02 | Build_03
---------------------------------------------------------

在这里,表格将按列增长,同时我们正在更新每个构建的状态。

现在,当我将选择命令用作

SELECT * FROM mytable where Name='dinesh' 

我可以按照表的顺序得到结果,比如 Build_01,Build_02,Build_03 顺序。但是,我想让它们成为 Build_03,Build_02,Build_01 吗?即在获取结果时按降序对特定列名进行排序

我们可以选择列名作为

select Sno,Name,Status,Build_03,Build_02,Build_01 where Name='dinesh'

在这里,我必须一一提供我不需要的所有列名称。因为我有很多构建列。

我怎样才能做到这一点?

注意:我不想重新排列列名,因为生产代码将列名附加到现有表。

最佳答案

SQL 旨在对行而非列进行排序,但您可以通过使用 information_schema.columns 中的序号位置构建一个 sql 语句并执行它(例如动态 sql)来实现这一点

drop table if exists t;

create table t(id int, b1 int,b2 int,b3 int);
insert into t values (1,1,2,3);
set @sql = (
concat
(
'select id,',
(
select group_concat(column_name order by ordinal_position desc)
from information_schema.columns
where table_name = 't' and table_schema = 'sandbox' and ordinal_position > 1
)
,' from t'
)
);

prepare sqlstmt from @sql;
execute sqlstmt;
deallocate prepare sqlstmt;

+------+------+------+------+
| id | b3 | b2 | b1 |
+------+------+------+------+
| 1 | 3 | 2 | 1 |
+------+------+------+------+
1 row in set (0.00 sec)

关于mysql - 在特定列上应用降序获取 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49443998/

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