Karena SELECT adalah operasi atom, saya rasa tidak ada solusi yang mudah. Saya juga melihat dua masalah berbeda yang perlu dipecahkan:
memilih satu baris tanpa mengulangi yang ditampilkan. Pada dasarnya Anda perlu menyimpan baris terakhir yang ditampilkan di suatu tempat. Jika Anda memiliki beberapa aplikasi, yang menyimpan status saat ini, mungkin ini merupakan opsi, untuk menyimpannya sebagai variabel eksternal. Solusi sketsa dilakukan di MySQL 5.0+:
Pertama siapkan pernyataan yang akan dieksekusi nanti dan atur posisi awal untuk kueri:
PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;
Anda mungkin ingin menambahkan urutan defautl untuk mendapatkan hasil yang andal. Setiap kali Anda ingin mendapatkan satu baris, jalankan pernyataan dengan
EXECUTE STMT USING @pos;
SELECT count(*) FROM customer INTO @max;
SET @pos=(@pos+1)%@max;
Hal lainnya adalah, Anda ingin membaca posisi acak. Satu-satunya solusi yang saya lihat sekarang, adalah membuat tabel sementara yang menyimpan konten dari pelanggan yang dipesan secara acak atau Anda membuat tabel sementara yang menampung semua angka dari 0[email protected] dan membaca posisi saat ini di tabel utama dari tabel sementara. Jika Anda memiliki aplikasi di luar MySQL, mungkin ada cara yang lebih elegan untuk menyelesaikannya.