Emulation ROW_NUMBER () funkció mysql, mysql

Ebben a cikkben azt fogja mondani, hogyan kell számba venni a lekérdezés eredménye által visszaadott sorok MySQL.

ROW_NUMBER () funkció - függvényében a rangsor, visszaadja a szekvenciális sorszám, kezdve 1 az első sorban. A sorszám gyakran van szükség, amikor jelentések készítéséhez. Ez a funkció van megvalósítva MS SQL és Oracle. A MySQL, nincs ilyen funkció, de nem nehéz megvalósítani, mivel a globális változókat.

sorszámozás

Felsorolni egy string, van, hogy egy változót lekérdezést. Megmutatjuk, ez a megközelítés egy egyszerű táblázatot, amely a munkavállalók jegyzékét (dolgozók). A következő lekérdezés kiválasztja az alkalmazottak az 5. táblázat, ami számukra számok sorrendben, kezdve 1:

Emulation ROW_NUMBER () funkció mysql, mysql

A fenti, kérünk:

  • ROW_NUMBER definiált változó és inicializáljuk a nulla értéket;
  • Értékét növeli 1 minden iterációs a kérelmet.

Egy másik technika, amely lehetővé teszi, hogy ugyanazt az eredményt elérni, hogy hozzon létre egy globális változó kilátás helyett, és a keresztmetszeti szövetség a két asztal. Egy példa egy ilyen lekérdezés:

Figyeljük meg, hogy a származtatott táblázatot kell egy álnevet a szabályok betartását a szintaxis.

Folytatása számozás Group

Hogyan határozza meg egy külön számozás minden sorban Group, Egyesült kifejezést ORDER BY vagy GROUP BY. Például, hogy szimulálni a következő lekérdezést:

Emulation ROW_NUMBER () funkció mysql, mysql

Létre kell hoznunk a fizetési listán, amelyben az egyes fizetési felel meg egy bizonyos számot. Annak érdekében, hogy a kívánt eredmény eléréséhez, szükségünk van két változó: az egyik - a sorrendben sorszám, a másik -, hogy tárolja az ügyfél-azonosító az előző sorból, hogy hasonlítsa össze a jelenlegi. A lekérdezés a következőképpen néz ki:

Mi használjuk a CASE nyilatkozatot, hogy értékelje a feltétellel: ha az ügyfél szám ugyanaz marad, növeljük a sor száma 1, különben mi meg a sor számát 1. Az eredmény ugyanaz lesz, mint a fenti képen eredményezett.

Most majd ugyanazt az eredményt elérni technika segítségével nyert asztal és cross-lekérdezés:

Tehát, megtanultuk, hogy kövessék a számozás lekérdezés húrok MySQL.

Fordítása a cikk «MySQL ROW_NUMBER emuláció» készítettünk egy csapat barátságos Web design projekt tól Z-ig