有什么方法可以按列值排序结果?

时间:2019-10-03 07:45:26

标签: mysql sql

我的MySQL表有很多列。

id|Date      |col1|col2|col3|col4|col5|...                |col500|
-----------------------------------------------------------------
 1|01.10.2019| 152|  99|   0|1598|  48|  filled with zeros|     1|
-----------------------------------------------------------------
 2|02.10.2019|  12| 344|  19|2544|   3|  filled with zeros|   152|
-----------------------------------------------------------------
....

是否可以订购专栏

  

SELECT * FROM表WHERE Date = '02 .10.2019'按列排序

并获得这样的结果

id|Date       |col4|col2|col500|col3|col1|col5|...              |
-----------------------------------------------------------------
 2|02.10.2019 |2544| 344|   152|  19|  12|   3|filled with zeros

1 个答案:

答案 0 :(得分:1)

如Madhur Bhaiya和P.Salmon所说,如果要按列值排序,可能是您的表设计不正确,可能是说,而不是 >列。 您可能需要像这样的表来代替具有列ID/ Date/ col1/ col2/ ... / col500的表

CREATE TABLE tbl(
pk integer not null primary key default autoincrement,
id integer not null,
dt date not null,
xxx_id integer,
value integer);

其中XXX_ID代表旧表中的列位置(可能是单个记录的标识符,我不知道您正在使用此表做什么)。

现在,您必须插入值:

INSERT INTO tbl (id, date, value) VALUES (1, '2019-10-01', 152);
INSERT INTO tbl (id, date, value) VALUES (1, '2019-10-01', 99);
INSERT INTO tbl (id, date, value) VALUES (1, '2019-10-01', 0);
INSERT INTO tbl (id, date, value) VALUES (1, '2019-10-01', 1592);
INSERT INTO tbl (id, date, value) VALUES (1, '2019-10-01', 48);
....
INSERT INTO tbl (id, date, value) VALUES (2, '2019-10-02', 12);
INSERT INTO tbl (id, date, value) VALUES (2, '2019-10-02', 344);
INSERT INTO tbl (id, date, value) VALUES (2, '2019-10-02', 19);
INSERT INTO tbl (id, date, value) VALUES (2, '2019-10-02', 2544);
...

问题的答案变得非常简单,就像

select * from tbl 
where id = 1 AND date = '2019-10-01'
order by value

最后一点:您可以决定插入具有零值的记录,或者跳过它们,或者插入具有NULL值的记录。这取决于表的目标。