Mysql - 从字符串数组列和顺序获取id

时间:2015-01-25 02:06:07

标签: mysql

这有点棘手。 我有一个表示用户的mysql表,每个用户都有一个用< ..>分隔的类别列。 -

id       Categories
1        <1><5><7>
2        <2><5><6>
3        <2><4><5><6>
4        <2><5><7><9>
5        <3><2><8>
...

现在,我收到一个包含类别列表的数组(即-1,3,6),我需要获取包含这些类别的行,并根据它们在数组中的位置进行ORDERED - 1是最多的重要的是,在那之后3和最后是6。 在这个例子中,我应该接收行1,5,2,3。 有关干净快速查询的任何建议吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

我个人会通过这样的查询获得所有类别的顺序:

select id from foo WHERE `category` LIKE '%<1>%' OR  `category` LIKE '%<3>%' OR  `category` LIKE '%<6>%';

并取回结果集并为每一行分数并订购它们 我相信mysql会进行优化,因此很难对它们进行排序。

http://sqlfiddle.com/#!2/74494f/9

答案 1 :(得分:0)

使用REGEXP

更清洁的方法
SELECT * FROM foo WHERE `category` REGEXP '<1>|<3>|<6>';