DISTINCT
< SQL
تستخدم العبارة DISTINCT
للحصول على قيمٍ فريدةٍ غير مكررة، وغالبًا ما تستخدم في استعلام SELECT
للحصول على سجلات لا تتكرر القيم فيما بينها، إذ يصبح الاستعلام بالشكل الآتي:
SELECT DISTINCT columns
FROM table;
مثال
إن كان الجدول الآتي patients
موجودًا في قاعدة البيانات:
Doctor | Section | Age | Patient | PatientID |
---|---|---|---|---|
Nasser | Cardiology | 76 | Salem | 1029 |
Abd Allah | Neurology | 17 | Hasan | 896 |
Reem | Maternity | 23 | Nadine | 964 |
Fateh | Cardiology | 65 | Rami | 1070 |
Kareem | Neurology | 19 | Abd al-Rahim | 1150 |
Hadi | Critical Care | 65 | Roushd | 1097 |
Reem | Maternity | 27 | Sana | 1034 |
Abd Allah | Neurology | 49 | Helen | 963 |
Hadi | Critical Care | 58 | Ahmad | 1154 |
Kareem | Neurology | 40 | Maher | 1069 |
Amnah | Maternity | 30 | Zeina | 1028 |
Fateh | Cardiology | 55 | Sarah | 1180 |
Hadi | Critical Care | 23 | Fadi | 1076 |
فللحصول على أسماء الأقسام الخاصة بالمرضى Section
دون أي تكرار يُستخدَم الاستعلام الآتي:
SELECT DISTINCT Section
FROM patients;
وتظهر النتائج بالشكل الآتي:
Section |
---|
Cardiology |
Neurology |
Maternity |
Critical Care |
الحصول على سجل واحد فقط
تُمكن الاستفادة من عبارة DISTINCT
للحصول على سجلٍ واحدٍ فقط لكل مجموعةٍ من السجلات التي تحتوي نفس القيمة، ولضمان الحصول على السجل المطلوب تستخدم عبارة ORDER BY
في الاستعلام، ليصبح بالشكل:
SELECT DISTINCT ON (column) columns
FROM table
ORDER BY columns;
مثال
إن كان الجدول weather
الآتي موجودًا في قاعدة البيانات:
Report | Time | Location |
---|---|---|
Mostly Cloudy | 4:30 | Aleppo |
Showers | 4:30 | Damascus |
Partly Cloudy | 13:00 | Damascus |
Showers | 5:00 | Aleppo |
Partly Cloudy | 17:00 | Aleppo |
Sunny | 15:00 | Damascus |
Showers | 12:30 | Aleppo |
عند تنفيذ الاستعلام الآتي:
SELECT DISTINCT ON (Location) Location, Time, Report
FROM weather
ORDER BY Location, Time DESC;
تُجلب السجلات الأحدث (اعتمادًا على الترتيب الزمني التنازليّ) لكل موقعٍ دون تكرار أيّ منها، وتظهر النتائج:
Report | Time | Location |
---|---|---|
Partly Cloudy | 17:00 | Aleppo |
Sunny | 15:00 | Damascus |
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |