【问题标题】:SQL Query - Order by with limit does not work correctlySQL 查询 - 按限制排序无法正常工作
【发布时间】:2013-12-30 12:06:08
【问题描述】:

我正在为此使用 CodeIgniter……但我不知道为什么它不起作用:X 有什么建议吗?

$this->db->from("twitch");
$this->db->where(array('banned' => 0));
$this->db->order_by("viewers", "DESC");
$this->db->limit($limit, $start);
$query = $this->db->get();

结果不按查看者 DESC 排序(或在主页 - 0 个查看者和最后一页 - 2000 个查看者)

模型函数 - http://pastebin.com/yqwvZEQ1 查看-http://pastebin.com/gL95uDR6

【问题讨论】:

  • 输出和样本数据是什么?

标签: php sql codeigniter


【解决方案1】:

试试这样:

$this->db->from('twitch')->where('banned'=>0)->order_by("viewers", "DESC")->limit($limit, $start);
$query = $this->db->get();

尝试使用codeigniter的链接方法。有关更多信息,您可以查看文档:http://ellislab.com/codeigniter/user-guide/database/active_record.html#select

【讨论】:

  • 与链式方法有什么区别?
  • $data=$this->db->where('banned'=>0)->order_by("viewers", "DESC")->limit($limit, $start)- >get('twitch')->result();
  • 没有成功。仍然没有按观众 DESC 排序。
【解决方案2】:
$query = $this->db->
    where(array('banned' => 0))->
    order_by('viewers', 'DESC')->
    limit($limit, $start)->
    get('twitch');

你使用 MySQL 吗?因为这个 LIMIT 语法只在 MySQL 中有效。还要确保您已经定义了 $limit 和 $start 值。

【讨论】:

  • 这里相同 - 不是由观众订购的 DESC
  • 尝试将limit($limit, $start)-> 更改为limit(20)-> 并检查现在的顺序是否正确。能否请您向我们展示您的显示观众列表的 PHP 代码?
【解决方案3】:

试试这个:

$this->db->limit($limit, $start);
$this->db->order_by("viewers", "DESC");
$this->db->where("banned", "0"));
$query = $this->db->get("twitch");

只是改变了使用函数的顺序。 limit 应该是第一个 - 否则它不会限制 *un*ordered *un*filtered 数据。

【讨论】:

  • 它有什么不同?
  • 一旦我像这样卡住了,这对我有用。
  • 这不合逻辑
  • 这个也一样...它不能由观众订购它们 DESC :X
猜你喜欢
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多