【问题标题】:MySql fetchin in order by IN clause [duplicate]MySql按IN子句按顺序获取[重复]
【发布时间】:2012-01-05 09:30:09
【问题描述】:

可能重复:
Ordering by the order of values in a SQL IN() clause

我知道我们可以通过将数组用作 php 来获取 mysql 中的所有行

$ids=array(14,23,2,41,33)

select * from table_name where id IN ($ids);

现在的问题是我希望按元素的顺序获取行,即

首先应该从行中取出 id 为 14 的行,然后是 23,然后是 2.. 当前获取数据的顺序是 -> id 为 2 的第一行,然后是 14,然后是 23 ....

并且我“不能”运行一个循环,导致数组大约有 200 个元素长,无法在同一实例中查询具有 200 个元素的服务器。有什么想法吗?

【问题讨论】:

标签: php sql select


【解决方案1】:
$ids = array( 14,23,2,41,33);
$sql = 'SELECT * 
            FROM table_name
        WHERE id IN ( ' . implode( ',', $ids) . ' )
        ORDER BY FIELD( id, ' . implode( ', ', $ids) . ')';

【讨论】:

  • 谢谢..!有用..!正如我在评论中提到的那样,find-in_set 也可以工作.. 但现在在 cakePHP 上安装它时遇到了麻烦.. :(
猜你喜欢
  • 2018-04-22
  • 1970-01-01
  • 2011-01-12
  • 2014-09-10
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多