mysql中的负偏移量?

问题描述 投票:1回答:2

我想从表中获取当前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,所以我把负' - '完全不起作用,我找不到解决方案。你有任何想法如何解决它?

mysql offset
2个回答
1
投票

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

  • 你有没有LIMITORDER 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 ;

0
投票

为什么不扭转订购?

$query1="SELECT id FROM `login`.`users` ORDER BY id DESC LIMIT 2000, 1";
$result=mysql_query($query1);
© www.soinside.com 2019 - 2024. All rights reserved.