这有点棘手。 我有一个表示用户的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。 有关干净快速查询的任何建议吗? 谢谢!
答案 0 :(得分:1)
我个人会通过这样的查询获得所有类别的顺序:
select id from foo WHERE `category` LIKE '%<1>%' OR `category` LIKE '%<3>%' OR `category` LIKE '%<6>%';
并取回结果集并为每一行分数并订购它们 我相信mysql会进行优化,因此很难对它们进行排序。
答案 1 :(得分:0)
使用REGEXP
SELECT * FROM foo WHERE `category` REGEXP '<1>|<3>|<6>';