mysql中的负偏移量?

时间:2013-07-04 16:05:43

标签: mysql offset

我想从表中获取当前ID,并且我使用了无效的代码

    $query1="SELECT id FROM `login`.`users` LIMIT 2000 OFFSET `id` - 1";
    $result=mysql_query($query1);

如果用户按下提交按钮,则:

    while($row = mysql_fetch_array($result))
    {
      echo $row['id'];
    }

例如,当前ID = 15,我希望是14,所以我把负面' - '完全不起作用,我找不到解决方法。你有任何想法如何解决它?

2 个答案:

答案 0 :(得分:1)

我发现您的查询至少有3个问题:

  • LIMIT没有ORDER BY。这就像对数据库说:“从表中获取2000行,第一个2000,以您喜欢的任何顺序 。”我相信你不希望这样。
  • 您不能在MySQL中拥有变量偏移和限制。既不消极。只有硬编码,正面或零。 (可以使用动态SQL绕过硬编码限制,但这里不需要它。)
  • 即使您可以拥有,并且按照您的愿望排序神奇地订购行,OFFSET 14可能无法让您从15开始。很惊讶,表格中可能缺少IDs

解决方案是使用:

SELECT id 
FROM login.users 
WHERE id >= 15                 -- the value you want to start from 
ORDER BY id ASC                -- the order
LIMIT 2000                     -- the limit
OFFSET 0 ;

答案 1 :(得分:0)

为什么不撤销订购?

$query1="SELECT id FROM `login`.`users` ORDER BY id DESC LIMIT 2000, 1";
$result=mysql_query($query1);