Използвайте:
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, защото не можете да използвате променлива в изглед поради дизайн . поведението на грешка/функция е документирано тук .