Mysql 如何使用具有特定值的列数对表重新排序

Mysql 如何使用具有特定值的列数对表重新排序,mysql,sql,Mysql,Sql,我有一张这样的桌子 ID F01 F02 FO3 1 1 0 0 2 1 1 0 3 1 1 1 我想把桌子重新排列成这样 ID F01 F02 FO3 3 1 1 1 2 1 1 0 1 1 0 0 因为第三行,有三个,一个在它的行中。 第二排,有两个,一个在这一排。 第1行有一个,一个在它的行中。如果你的意思是物理上重新排序,不要这样

我有一张这样的桌子

ID   F01   F02   FO3
1    1     0     0
2    1     1     0
3    1     1     1
我想把桌子重新排列成这样

ID   F01   F02   FO3
3    1     1     1
2    1     1     0
1    1     0     0
因为第三行,有三个,一个在它的行中。 第二排,有两个,一个在这一排。
第1行有一个,一个在它的行中。

如果你的意思是物理上重新排序,不要这样做。数据库表中没有“订单”,除非您使用
orderby
指定它

SELECT
*
FROM
your_table
ORDER BY F01 + F02 + F03 DESC
如果要查找不是1的特定值,可以这样做:

SELECT
*
FROM
your_table
ORDER BY IF(F01 = 'some_value', 1, 0) + IF(F02 = 'some_value', 1, 0) + IF(F03 = 'some_value', 1, 0) DESC

如果要依次查找按每列排序的结果,请执行以下操作:

  SELECT *
    FROM table1
ORDER BY f01 DESC, fo2 DESC, f03 DESC
按顺序拆分列可以使用索引


如果您正在寻找值的总和,fancyPant的答案更合适。

您的意思是要更改表中记录的顺序,还是要在查询后对记录进行排序?记录(4,1,0,1)和(5,0,1,1)将出现在结果中的什么位置?您的第二个查询可以按顺序用
重写(F01='some_value')+(F02='some_value')+(F03='some_value')DESC
这里说“谢谢”的通常方式是接受答案。其他人也会知道,问题已经解决了。