MySQL中where $column in($list) 按着$list排序,FIND_IN_SET的用法

星期六 下午 18:03 狂奔的蜗牛 数据库技术 4313 views
2
Comments

假设有如下的表结构:

CREATE TABLE `metadata_default` (
  `songid` int(10) unsigned NOT NULL DEFAULT '0',
  `songname` varchar(100) NOT NULL DEFAULT '',
  `specialname` varchar(100) NOT NULL DEFAULT '',
  `hot` mediumint(5) NOT NULL DEFAULT '0',
  UNIQUE KEY `songid` (`songid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

1.测试一
in中的songid的顺序为 5,4,3,返回的顺序为3,4,5,因为不加order by时,默认是按照主键的值从小到大排序。
SELECT * FROM metadata_default WHERE songid IN(5,4,3);

songid    songname    specialname    hot
3    songname3    specialname3    50991
4    songname4    specialname4    59560
5    songname5    specialname5    772

2.测试二
加上ORDER BY FIND_IN_SET xxx以后,就可以按照in中值的顺序进行排序了。
SELECT * FROM metadata_default WHERE songid IN(5,4,3) ORDER BY FIND_IN_SET(songid,'5,4,3');
songid    songname    specialname    hot
5    songname5    specialname5    772
4    songname4    specialname4    59560
3    songname3    specialname3    50991


mysql in ordery by 2012/03/30 18:03:10
评论(2)
2楼 大大 评论时间:2012-07-02 16:55:40 引用
不错 哦
1楼 php教程 评论时间:2012-05-26 11:39:52 引用
bjfo验证码能在大点吗
共 2 个评论 1/1 页

发表评论

引用成功取消引用×

昵称*: 邮箱*: 网址:

最多可输入300字符 验证码*:


Process: 0.055s | DB :18 queries | UseMem:2,329 kb