ROWNUM w MySQL
Posted on luty 19th, 2008 in bazy danych, programowanie |
Ostatnio, z powodu zmiany w kodzie pewnego CMSa, musiałem dopisać do bazy danych (MySQL) kilkadziesiąt bardzo podobnych do siebie rekordów. Największym problemem było to, że każdy wiersz musiał dostać swój kolejny numer (powiększony o stałą). Ponieważ w MySQL nie ma odpowiednika Oracle'owego ROWNUM musiałem ten problem obejść.
Numer wiersza można obliczyć tworząc sobie zmienną.
MySQL:
-
SELECT @rownum := @rownum + 1 rownum, i.*
-
FROM (SELECT @rownum := 0) r, informacja i
Po skorzystaniu z dobrodziejstw INSERT ... SELECT moje ostateczne zapytanie dodające operacje do modułów CMSa, które tej operacji jeszcze nie mają, wyglądało tak.
MySQL:
-
INSERT INTO operacja(priorytet, id_modul, nazwa, kod)
-
SELECT @rownum := @rownum + 1 priorytet, m.id_modul, 'lista', 'lista'
-
FROM (
-
SELECT @rownum := (
-
SELECT max(id_operacja) FROM operacja
-
)
-
) r, ecms_modul m
-
WHERE id_modul NOT IN (
-
SELECT id_modul FROM operacja WHERE kod = 'lista'
-
);