הפונקציה ROW_NUMBER() ב-MySQL משמשת להחזרת מספר עוקב עבור כל שורה בתוך המחיצה שלה. זה סוג של פונקציית חלון. מספר השורה מתחיל מ-1 למספר השורות הקיימות במחיצה.
יש לציין כי MySQL אינו תומך בפונקציה ROW_NUMBER() לפני גרסה 8.0, אך הם מספקים משתנה הפעלה שמאפשר לנו לחקות את הפונקציה הזו.
תחביר
להלן התחביר הבסיסי לשימוש ב-ROW_NUMBER() בו MySQL :
מעבר אטימות css
ROW_NUMBER() OVER ( )
הבה נדגים זאת באמצעות דוגמה .
ראשית, אנו הולכים ליצור טבלה בשם ' אדם ' באמצעות ההצהרה שלהלן:
CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL );
לאחר מכן, יש צורך להוסיף ערכים לטבלה זו. בצע את ההצהרה שלהלן:
INSERT INTO Person(Name, Product, Country, Year) VALUES ('Stephen', 'Computer', 'USA', 2015), ('Joseph', 'Laptop', 'India', 2016), ('John', 'TV', 'USA', 2016), ('Donald', 'Laptop', 'England', 2015), ('Joseph', 'Mobile', 'India', 2015), ('Peter', 'Mouse', 'England', 2016);
לאחר מכן, בצע את המשפט SELECT כדי להציג את הרשומות:
ג'אווה למבדה
mysql> SELECT * FROM Person;
נקבל את הפלט, כפי שמוצג להלן:
אלגוריתם לחיפוש בינארי
כעת, אנו יכולים להשתמש בפונקציה ROW_NUMBER() כדי להקצות מספר רצף לכל רשומה באמצעות המשפט שלהלן:
SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person;
זה ייתן את הפלט הבא:
שוב, אנו יכולים להשתמש בפונקציה ROW_NUMBER() כדי להקצות מספר רצף לכל רשומה בתוך מחיצה באמצעות המשפט שלהלן:
SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person;
זה ייתן את הפלט כמו למטה כאשר שתי מחיצות נמצאו על סמך השנה (2015 ו-2016).
מיון רשימה לפי Java
MySQL ROW_NUMBER() באמצעות משתנה הפעלה
אנו יכולים לחקות את הפונקציה ROW_NUMBER() כדי להוסיף מספר שורה בסדר הולך וגדל באמצעות משתנה ההפעלה.
בצע את ההצהרה שלהלן שתוסיף את מספר השורה עבור כל שורה, שמתחילה מ-1:
SET @row_number = 0; SELECT Name, Product, Year, Country, (@row_number:=@row_number + 1) AS row_num FROM Person ORDER BY Country;
בהצהרה זו, ציין תחילה את משתנה הפגישה @row_number מסומן על ידי @prfix והגדר את הערך שלו 0. לאחר מכן, בחרנו את הנתונים מהטבלה Person ומגדילים את הערך עבור המשתנה @row_number באחד לכל שורה.
לאחר ביצוע מוצלח של השאילתות, נקבל את הפלט כדלקמן:
שוב, אנו הולכים להשתמש במשתנה הפעלה כטבלה ונחבר אותו עם טבלת המקור באמצעות המשפט הבא:
SELECT (@row_number:=@row_number + 1) AS row_num, Name, Country, Year FROM Person, (SELECT @row_number:=0) AS temp ORDER BY Year;
נקבל את הפלט כדלקמן: