1

テーブルから現在の 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 になりたいので、負の「-」を入れましたが、まったく機能していません。これに対する解決策が見つかりません。それを修正する方法はありますか?

4

2 に答える 2

3

あなたのクエリには少なくとも 3 つの問題があります。

  • あなたはLIMITなしで持っていORDER BYます。これは、データベースに対して「テーブルから 2000 行、最初の 2000 行を好きな順序で取得してください」と言うようなものです。私はあなたがそれを望んでいないと確信しています。
  • MySQL では変数のオフセットと制限を設定できません。ネガティブでもない。ハードコーディングされた正またはゼロのみ。(ハードコーディングされた制限は動的 ​​SQL でバイパスできますが、ここでは必要ありません。)
  • できたとしても、希望の順序で魔法のように順序付けされた行がフェッチされたとしても、OFFSET 14から開始できない場合があります15IDs驚いたことに、テーブルに欠落があるかもしれません!

解決策は次を使用することです:

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 ;
于 2013-07-04T16:41:44.320 に答える
0

なぜ順序を逆にしないのですか?

$query1="SELECT id FROM `login`.`users` ORDER BY id DESC LIMIT 2000, 1";
$result=mysql_query($query1);
于 2013-07-04T16:16:47.133 に答える