下面是我的代码,我想要根据序列3,10,然后7来提取数据,我怎么做呢?到目前为止,它得到了前10,然后7,然后3。
<code>
$cars = $this->car->find('all', array(
'conditions' => array(
'car.id' => array(3, 10, 7)
),
'limit' => 3,
'order' => array('car.id' => 'desc')
));
</code>发布于 2016-02-28 04:24:30
其思想是根据它们在数组中各自的位置对结果进行排序。在这种情况下,MySQL FIND_IN_SET函数可以帮助您。
您可以通过语句添加以下命令:
ORDER BY FIND_IN_SET(car.id,'3,10,7')注释:,您需要在等价的cake php mysql查询中通过语句转换这个顺序。
如果字符串在字符串列表中存在(作为子字符串),则MySQL FIND_IN_SET()返回字符串的位置。字符串列表本身是一个字符串,包含由‘,’(逗号)字符分隔的子字符串。 当字符串列表中不存在搜索字符串时,此函数返回0,如果其中任一参数为空,则返回NULL。
示例输入:
查询:
SELECT *
FROM carsid
2
3
4
5
6
7
8
9
10
11输出:
查询:
SELECT *
FROM cars
WHERE cars.id IN (3,10,7)
ORDER BY FIND_IN_SET(cars.id,'3,10,7')id
3
10
7编辑:
我不知道构建mysql查询的CAKE PHP syntax。
但是在cake php mysql中类似的查询可能是这样的:
$cars = $this->car->find('all', array(
'conditions' => array(
'car.id' => array(3, 10, 7)
),
'limit' => 3,
'order' => array(FIND_IN_SET('car.id' , '3,10,7'))
));https://stackoverflow.com/questions/35678430
复制相似问题