select
cast(substring(w, 1, length(w)-5) as unsigned) c,
cast(substring(w, -4) as unsigned) b
from (
select '12/2557' w
union all select '14/2557'
union all select '14/2556'
union all select '141/2556'
union all select '14/2555'
union all select '13/2555'
) t
order by lpad(w, 10, '0') desc
มันได้ แบบนี้ครับ
c b
141 2556
14 2557
14 2556
14 2555
13 2555
12 2557
select
cast(substring(w, 1, length(w)-5) as unsigned) c,
cast(substring(w, -4) as unsigned) b,
lpad(w, 10, '0')
from (
select '12/2557' w
union all select '14/2557'
union all select '14/2556'
union all select '141/2556'
union all select '14/2555'
union all select '13/2555'
) t
order by lpad(w, 10, '0') asc
เอาแบบนี้ง่ายกว่าไหมครับ ? จะได้ไม่ต้องใช้ function lpad ให้วุ่นวาย ลำพังแค่ Order by ก็ทำให้ข้อมูลช้าอยู่แล้ว ยังจะใช้ function อีก ระวังจะไปกันใหญ่นะครับ
เอาจริงแล้วก็ใช้แค่
numOfWeeek(int), OfYear:(int) ก็เก็บ index ไว้ด้วย
1 ,2557
2,2557
3 ,2557