日期:2014-05-16  浏览次数:20807 次

mysql in 自定义排序的问题
写道
xuxh(许消寒) 09:55:27
SELECT a.fabric_color_id,a.fabric_id,a.fabric_color_code,a.color_value,b.match_name AS color_match_name FROM fabric_color AS a LEFT JOIN color AS b ON b.color_id=a.color_id WHERE (a.fabric_color_id IN ('6','5','4'))
zhangxs(张雪松) 10:01:12
SELECT a.fabric_color_id,a.fabric_id,a.fabric_color_code,a.color_value,b.match_name AS color_match_name
FROM fabric_color AS a LEFT JOIN color AS b ON b.color_id=a.color_id
WHERE (a.fabric_color_id IN ('6','5','4'))
order by substring_index('6,5,4', fabric_color_id, 1);

select id, substring_index('''33'', ''3'',''6'',''4'', ''64''', concat('''', id, ''''), 1) from dr_original_product where id in (33, 3, 6, 4, 64)
order by substring_index('''33'', ''3'',''6'',''4'', ''64''', concat('''', id, ''''), 1)
zhangxs(张雪松) 10:25:52
按in中的顺序排序

还有就是使用 field方法来排序

mysql 可以使用FIELD()进行自定义排序
SELECT name, email, ... WHERE uid IN ([uid's from first sql]) order by field(uid,[uid's from first sql])

zhangxs(张雪松) 2012-11-01 10:50:15
MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1、str2、str3、str4比较,返回1、2、3、4,如遇到null或者不在列表中的数据则返回0.
xuxh(许消寒) 2012-11-01 10:50:47
哪个效率高呢
zhangxs(张雪松) 2012-11-01 10:51:59
个人认为前面的会高一些. 因为只需要处理字符串, 后面的那个需要多个变量.
xuxh(许消寒) 2012-11-01 10:52:27
substring_index > field 么?
zhangxs(张雪松) 2012-11-01 10:52:49
另外两者有一个重要的区别, 但是值在排序中不存在间, 前者会出现在后面. 后者会出现在前面
zhangxs(张雪松) 2012-11-01 11:02:31
应该是field的效率高
zhangxs(张雪松) 2012-11-01 11:02:42
这个的排序更简单一些/
xuxh(许消寒) 2012-11-01 11:03:06
学习到了

?

?

?