我正在努力解决这个复杂的问题。我想插入一些产品的订单位置。例如,我当前有一个位置为空的表1,我想对每个产品id进行分组,并基于productid group为每个大小分配一个菜单位置,并使用find \u in \u 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;
换句话说,我希望它看起来像表2。
表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;
2条答案
按热度按时间bxfogqkk1#
创建一个包含所有
Size
一列中的值和第二列中这些大小的整数顺序—称为该表menu_pos
. 把这个加入你的Table
在大小上,生成一个表或视图(称为product_pos
)包含列product_id
,size
,和menu_pos
. 然后修改menu_pos
值,以确保它们使用窗口函数严格按顺序排列,例如:窗口函数需要mysql 8。
mnemlml82#
您可以在mysql 8.0之前的版本中使用变量:
在mysql 8+中,这要简单得多: