gotali4396 Asked: 2023-07-29 21:06:59 +0800 CST2023-07-29 21:06:59 +0800 CST 2023-07-29 21:06:59 +0800 CST 如何让你改变产品的顺序? 772 数据库中有这样一张表: 产品: ID 姓名 类型 1 产品1 1 2 产品2 2 3 产品3 2 4 产品4 1 5 产品5 1 6 产品6 1 7 产品7 2 提取它们的选择是: select * from products order by id 这个选择按 id 排序,所以我会得到这个结果: 但现在他们希望管理员可以更改顺序,这样他就可以设置自定义顺序。例如这个: 正如您所看到的,这是一个自定义顺序,它不按 id 排序,而是由管理员决定,我希望每个用户都保留该顺序,因此刷新页面时它不应该丢失。 实现这一点的最佳方法是什么? mysql 3 个回答 Voted Best Answer J.D. 2023-07-30T00:21:57+08:002023-07-30T00:21:57+08:00 但现在他们希望管理员可以更改顺序,这样他就可以设置自定义顺序。 实现这一点的最佳方法是什么? 您可能想要向products表中添加另一列,名为sortOrder. 它将是一个数字列,例如INT. product然后,您可以按照您希望它们排序的顺序为每个元素添加排序顺序编号。您应该将数字分开,以防您需要在两个现有排序顺序products之间插入任何数字。products例如 10 秒或 100 秒。 Ergest Basha 2023-07-30T04:50:26+08:002023-07-30T04:50:26+08:00 正如您所看到的,这是一个自定义顺序,它不按 id 排序,而是由管理员决定,我希望每个用户都保留该顺序,因此刷新页面时它不应该丢失。 还有另一种方法。您可以按顺序使用FIELD()函数。 select p.id, p.name, p.type from products p order by field (id,5,1,6,4,3,7,2); 结果: id name type 5 product 5 1 1 product 1 1 6 product 6 1 4 product 4 1 3 product 3 2 7 product 7 2 2 product 2 2 现在管理员可以更改订单模式。 我想不出一种自动创建订单模式的方法。 Klustron_dq 2023-08-03T11:12:28+08:002023-08-03T11:12:28+08:00 如果这种选择很频繁,最好的方法是添加一个可以满足您要求的列(一个int列并设置您需要的数字),并在其上添加索引,以确保您不需要每次需要时“对文件进行排序”。
您可能想要向
products
表中添加另一列,名为sortOrder
. 它将是一个数字列,例如INT
.product
然后,您可以按照您希望它们排序的顺序为每个元素添加排序顺序编号。您应该将数字分开,以防您需要在两个现有排序顺序products
之间插入任何数字。products
例如 10 秒或 100 秒。还有另一种方法。您可以按顺序使用FIELD()函数。
结果:
现在管理员可以更改订单模式。
我想不出一种自动创建订单模式的方法。
如果这种选择很频繁,最好的方法是添加一个可以满足您要求的列(一个int列并设置您需要的数字),并在其上添加索引,以确保您不需要每次需要时“对文件进行排序”。