我有一个包含订单项目的表格,如下所示:
Product | Color | Size | Size Range ID (from a different, joined table)
-----------------------------------------------------------------------
Shirt | Blue | L | 1
Shirt | Blue | M | 1
Shirt | Blue | S | 1
请注意,尺寸按上表中的字母顺序排序。
我还有一个大小范围表,如下所示:
id | size_01 | size_02 | size_03
--------------------------------
1 | S | M | L
如何强制第一个表上的项目按ORDER BY第二个表格中的大小位置?
答案 0 :(得分:1)
您可以使用join
组合表格,然后使用field()
来获取列列表中的位置:
select i.*
from items i left outer join
SizeRange sr
on i.SizeRangeId = sr.SizeRangeId
order by field(i.Size, sr.size_01, sr.size_02, sr.size_03)
答案 1 :(得分:0)
SELECT
MAX(CASE Size WHEN 'S' THEN Size ELSE '' END) AS 'size_01',
MAX(CASE Size WHEN 'L' THEN Size ELSE '' END) AS 'size_02',
MAX(CASE Size WHEN 'M' THEN Size ELSE '' END) AS 'size_03'
FROM Test
GROUP BY Product