Mysql 对选定行中的列值进行排序

Mysql 对选定行中的列值进行排序,mysql,Mysql,我有一个表,其中有4列int-type col1 col2 col3 col4 3 2 3 4 2 2 4 3 我试图以有序的形式选择这些值,如: colx colx colx colx 2 3 3 4 列名在结果中并不重要,也欢迎将结果作为一个列(如果以某种方式连接): 感谢对于单行,可以使用当前结构完成,但是如果有多行,则需要主键或任何唯一键 考虑以下几点 mysql> selec

我有一个表,其中有4列int-type

col1  col2  col3  col4
   3     2     3     4
   2     2     4     3
我试图以有序的形式选择这些值,如:

colx  colx  colx  colx
   2     3     3     4
列名在结果中并不重要,也欢迎将结果作为一个列(如果以某种方式连接):


感谢对于单行,可以使用当前结构完成,但是如果有多行,则需要主键或任何唯一键

考虑以下几点

mysql> select * from test ;
+------+------+------+------+------+
| col1 | col2 | col3 | col4 | id   |
+------+------+------+------+------+
|    3 |    2 |    3 |    4 |    1 |
|    4 |    7 |    1 |    3 |    2 |
+------+------+------+------+------+
现在的问题是

select 
id,
group_concat(x.col order by x.col separator '.') as colx
from ( 
  select id,col1 as col from test 
  union all 
  select id,col2 as col from test 
  union all 
  select id,col3 as col from test 
  union all 
  select id,col4 as col from test
)x group by id
结果看起来像

+------+---------+
| id   | colx    |
+------+---------+
|    1 | 2.3.3.4 |
|    2 | 1.3.4.7 |
+------+---------+

你的问题不清楚。您想要升序还是降序的信息?这是你的问题吗?这很清楚,因为我展示了我想要的,但不管是升序还是降序,任何情况都不重要。你想根据列而不是行进行排序,对吗?好了,这不是SQL要处理的事情,但您可以将它们作为轴心检查这个问题:这是一次选择一行还是多行?即使您这样做了,返回的数据会有什么用处,因为您不再知道哪列是按什么顺序排列的。毫无疑问,这些数据变得毫无意义
+------+---------+
| id   | colx    |
+------+---------+
|    1 | 2.3.3.4 |
|    2 | 1.3.4.7 |
+------+---------+