按数字对单行中的列进行排序


Sort Columns from a Single Row by Number

我可能想多了......但我无法弄清楚这一点。我有一个有五列的数据库。在这些列中是一个随机数 1-6。我正在尝试拉动这一行,然后对它们进行重新排序 asc 或 desc- 没关系。

Col1 | Col2 | Col3 | Col4 | Col5
---------------------------------
  2  |   1  |   3  |   5  |   4

我想知道这些行是否显示:1,2,3,4,5 或 5,4,3,2,1。

谁能帮我?

建议

将列值存储到数组中并执行sort($column_value_array, SORT_NUMERIC)

也看看这个 http://php.net/manual/en/function.sort.php

好吧,

如果您只是尝试对数组进行排序PHP那么已经为此完成了一个函数

sort ($array [, int $sort_flags = SORT_REGULAR ] )

该方法将返回与排序的成功状态相关的布尔值。

请注意,sort_flag是兼性的,在您的情况下实际上不需要使用。

有关详细信息,请参阅 http://php.net/manual/en/function.sort.php。

另一种方法是在选择行时简单地向查询添加 order by 子句。

我建议

SELECT * from table WHERE
Col1 in (1,2,3,4,5) && 
Col2 in (1,2,3,4,5) &&
Col3 in (1,2,3,4,5) &&
Col4 in (1,2,3,4,5) &&
Col5 in (1,2,3,4,5) &&
Col1 != Col2 &&
Col1 != Col3 &&
Col1 != Col4 &&
Col1 != Col5 &&
Col2 != Col3 &&
Col2 != Col4 &&
Col2 != Col5 &&
Col3 != Col4 &&
Col3 != Col5 &&
Col4 != Col5 &&

这是一个查询。这将确保在每列(任何)中存在任何 1,2,3,4,5 个数字,即 5 列中有不同的数字

select *,
((LENGTH(concat(cola,colb,colc,cold,cole))) - LENGTH(REPLACE(concat(cola,colb,colc,cold,cole), '1', ''))) as one,
((LENGTH(concat(cola,colb,colc,cold,cole))) - LENGTH(REPLACE(concat(cola,colb,colc,cold,cole), '2', ''))) as two,
((LENGTH(concat(cola,colb,colc,cold,cole))) - LENGTH(REPLACE(concat(cola,colb,colc,cold,cole), '3', ''))) as three,
((LENGTH(concat(cola,colb,colc,cold,cole))) - LENGTH(REPLACE(concat(cola,colb,colc,cold,cole), '4', ''))) as four,
((LENGTH(concat(cola,colb,colc,cold,cole))) - LENGTH(REPLACE(concat(cola,colb,colc,cold,cole), '5', ''))) as five
from tests
having one = 1 AND two = 1 AND three = 1 AND four = 1 AND five = 1