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 |
|---|---|---|---|---|
| نعم | نعم | نعم | نعم | نعم |