Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 类似excel的SQL多排序数据库_Mysql_Sql_Sorting - Fatal编程技术网

Mysql 类似excel的SQL多排序数据库

Mysql 类似excel的SQL多排序数据库,mysql,sql,sorting,Mysql,Sql,Sorting,首先,我使用的是MYSQL 我的数据库有三个表:行、列和单元格。行仅包含id、列id和名称,但单元格至关重要。看起来是这样的: id | rowId | columnId | value1 | value2 | value3 | value4 | value5 | -------------------------------------------------------------------- 1 | 1 | 1 | v1 | v2 | v3

首先,我使用的是MYSQL

我的数据库有三个表:行、列和单元格。行仅包含id、列id和名称,但单元格至关重要。看起来是这样的:

id | rowId | columnId | value1 | value2 | value3 | value4 | value5 |
--------------------------------------------------------------------
 1 |     1 |        1 |     v1 |     v2 |     v3 |     v4 |     v5 |
--------------------------------------------------------------------
 2 |     1 |        2 |     v5 |     v6 |     v7 |     v8 |     v9 |
--------------------------------------------------------------------
 3 |     2 |        1 |    v10 |    v12 |    v13 |    v14 |    v15 |
--------------------------------------------------------------------
 4 |     2 |        2 |     v1 |     v2 |     v3 |     v4 |     v5 |
--------------------------------------------------------------------
 5 |     3 |        1 |     v5 |     v6 |     v7 |     v8 |     v9 |
--------------------------------------------------------------------
 6 |     3 |        2 |    v10 |    v12 |    v13 |    v14 |    v15 |
--------------------------------------------------------------------
它表示包含6个单元格(2列3行)的表,每个单元格包含5个值。 我想做的是获取由多个包含特定值的表排序的行ID列表

示例排序: value1=v10,columndId=1, 值4=v8,列DID=2, 以任何顺序休息

输出:

id | rowId | columnId | value1 | value2 | value3 | value4 | value5 |
--------------------------------------------------------------------
 3 |     2 |        1 |    v10 |    v12 |    v13 |    v14 |    v15 |
 2 |     1 |        2 |     v5 |     v6 |     v7 |     v8 |     v9 |
 6 |     3 |        2 |    v10 |    v12 |    v13 |    v14 |    v15 |
所以右行的顺序是2->1->3

我得到的是这个SQL查询:

SELECT rowId FROM cells WHERE
    columnId = 1 OR
    columnId = 2 OR
ORDER BY value1 = v10, value4 = v8;
但它给了我这个输出:

id | rowId | columnId | value1 | value2 | value3 | value4 | value5 |
--------------------------------------------------------------------
 3 |     2 |        1 |    v10 |    v12 |    v13 |    v14 |    v15 |
 6 |     3 |        2 |    v10 |    v12 |    v13 |    v14 |    v15 |
 2 |     1 |        2 |     v5 |     v6 |     v7 |     v8 |     v9 |
 5 |     3 |        1 |     v5 |     v6 |     v7 |     v8 |     v9 |
 1 |     1 |        1 |     v1 |     v2 |     v3 |     v4 |     v5 |
 4 |     2 |        2 |     v1 |     v2 |     v3 |     v4 |     v5 |

你有没有关于如何处理这种排序的IDE?

嘿,你可以通过

所以

这将按照响应您的案例陈述的数值排序,因此您可以创造性地排序您想要的任何东西

order by case when value1=v10 then 1
              when value14=v8 then 2
              when something=v2 then 3
         end