Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да избирате записи един по един, без да се повтаряте

Тъй като SELECT е атомна операция, не мисля, че има лесно решение. Също така виждам два различни проблема, които трябва да бъдат решени:

избиране на един ред, без да се повтаря показан. По принцип трябва да съхраните последния показан ред някъде. Ако имате някакво приложение, което съхранява текущото състояние, може да е опция да го запишете като външна променлива. Скицираното решение е направено в MySQL 5.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;

Другото нещо е, че искате да прочетете произволна позиция. Единственото решение, което виждам в момента, е да се създаде временна таблица, която или да съдържа съдържанието от клиента, подредено на случаен принцип, или да създадете временна таблица, съдържаща всички числа от 0[email protected] и прочетете текущата позиция в основната таблица от временната таблица. Ако имате приложение извън MySQL, може да има по-елегантни начини за решаване на това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Синтаксис на SQL CREATE DATABASE – Изброен от СУБД

  2. Няма резултати от заявка за модел [App\Products] Laravel

  3. Как безопасно и ефективно да получите идентификатора на реда след вмъкване с mysql, използвайки MySQLdb в python?

  4. Какво е поведението на MySQL JOIN по подразбиране, INNER или OUTER?

  5. MySQL MariaDB – Заявка с помощта на Temp Table