2013-07-04 86 views
1

我想从一个表中获得当前的ID,我用这个代码是不工作mysql中的负偏移量?

$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,所以我把负面' - '这是根本不工作,我找不到解决方案。你有什么想法如何解决它?

回答

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);