【发布时间】:2019-04-14 13:49:21
【问题描述】:
我正在为这个复杂的查询而苦苦挣扎。我正在尝试插入某些产品的订单位置。 例如, 我目前有一个位置为 NULL 的表 1,我想对每个产品 ID 进行分组,并根据 ProductID 组为每个尺寸分配一个菜单位置,并使用这个 FIND_IN_SET:
FIND_IN_SET(size,"UNI,XS,S,M,L,XL,XXL,3XL,4XL,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60") asc;
换句话说,我希望它看起来像 Table2。
表1
ID | ProductID | Size | Menu_position
1 | 100 | S | NULL
2 | 100 | M | NULL
3 | 100 | L | NULL
4 | 101 | 40 | NULL
5 | 101 | 41 | NULL
6 | 101 | 42 | NULL
7 | 102 | XS | NULL
8 | 102 | L | NULL
表2
ID | ProductID | Size | Menu_position
1 | 100 | S | 1
2 | 100 | M | 2
3 | 100 | L | 3
4 | 101 | 40 | 1
5 | 101 | 41 | 2
6 | 101 | 42 | 3
7 | 102 | XS | 1
8 | 102 | L | 2
到目前为止我收集的内容:
产品组数:select count(distinct ProductID) from Table1
按特定顺序排序大小: SELECT * FROM Table1 ORDER BY FIND_IN_SET(size,"UNI,XS,S,M,L,XL,XXL,3XL,4XL,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60") asc;
【问题讨论】:
-
分配这样的菜单位置背后的逻辑是什么?
-
产品 ID 的菜单位置是否必须升序?例如,如果产品只有尺寸“S”和“L”,菜单位置应该是 1 和 2,还是 1 和 3 的位置可以?
-
您可以将您的尺寸和菜单位置值(整数)放入一个表格并加入该表格以获取每种尺寸的菜单位置。
-
@rd_nielsen 是的,菜单必须按时间顺序 1 和 2,不能跳过。这就是为什么我不能硬分配每个值。
-
@vivek_23 用于下拉菜单
标签: mysql sql if-statement while-loop