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

Класиране на редове в MySQL изглед

Използвайте:

SELECT t.id,
       t.variety,
       (SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
  FROM TABLE t

Това не е идеалният начин да направите това, защото заявката за стойността num ще се изпълни за всеки върнат ред. По-добра идея би била да създадете NUMBERS таблица, с една колона, съдържаща число, започващо от едно, което се увеличава до безобразно голямо число, и след това се присъединете и препратете към NUMBERS таблица по начин, подобен на примера за променлива, който следва.

Класиране на MySQL или липса на такова

Можете да дефинирате променлива, за да получите функционалност за псевдо номер на ред, тъй като MySQL няма никакви функции за класиране:

SELECT t.id,
       t.variety,
       @rownum := @rownum + 1 AS num
  FROM TABLE t,
       (SELECT @rownum := 0) r
  • SELECT @rownum := 0 дефинира променливата и я настройва на нула.
  • r е псевдоним на подзаявка/таблица, защото ще получите грешка в MySQL, ако не дефинирате псевдоним за подзаявка, дори и да не я използвате.

Не може да се използва променлива в MySQL изглед

Ако го направите, ще получите грешка 1351, защото не можете да използвате променлива в изглед поради дизайн . поведението на грешка/функция е документирано тук .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на pdo в php със съхранена процедура

  2. SQLSTATE[HY093]:Невалиден номер на параметър

  3. Как да дефинирате персонализирана ПОРЪЧКА ПО ред в mySQL

  4. SELECT с променливи на заявка, които не използват INDEX

  5. проблем при инсталирането на mysql2 gem с rails3 на mac