SELECTは不可分操作であるため、簡単な解決策はないと思います。また、解決する必要のある2つの異なる問題があります。
表示されている行を繰り返さずに単一の行を選択します。基本的に、最後に表示された行をどこかに保存する必要があります。現在の状態を保存するアプリケーションがある場合は、それを外部変数として保存することもできます。スケッチされたソリューションはMySQL5.0以降で実行されます:
まず、後で実行されるステートメントを準備し、クエリの初期位置を設定します。
PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;
信頼できる結果を得るために、デフォルトの順序を追加することをお勧めします。単一の行を取得するたびに、
でステートメントを実行します。EXECUTE STMT USING @pos;
SELECT count(*) FROM customer INTO @max;
SET @pos=(@pos+1)%@max;
もう1つは、ランダムな位置を読み取りたいということです。私が今見ている唯一の解決策は、ランダムに注文された顧客からのコンテンツを保持する一時テーブルを作成するか、0