2013-07-04 112 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);