الفرق بين المراجعتين لصفحة: «SQL/distinct»
< SQL
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
ط تعديل الأمثلة |
||
سطر 2: | سطر 2: | ||
تستخدم العبارة <code>DISTINCT</code> للحصول على قيمٍ فريدةٍ غير مكررة، وغالبًا ما تستخدم في استعلام <code>[[SQL/select|SELECT]]</code> للحصول على سجلات لا تتكرر القيم فيما بينها، إذ يصبح الاستعلام بالشكل الآتي:<syntaxhighlight lang="sql"> | تستخدم العبارة <code>DISTINCT</code> للحصول على قيمٍ فريدةٍ غير مكررة، وغالبًا ما تستخدم في استعلام <code>[[SQL/select|SELECT]]</code> للحصول على سجلات لا تتكرر القيم فيما بينها، إذ يصبح الاستعلام بالشكل الآتي:<syntaxhighlight lang="sql"> | ||
SELECT DISTINCT columns | SELECT DISTINCT columns | ||
FROM | FROM tbl; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
سطر 112: | سطر 112: | ||
== الحصول على سجل واحد فقط == | == الحصول على سجل واحد فقط == | ||
تُمكن الاستفادة من عبارة <code>DISTINCT</code> للحصول على سجلٍ واحدٍ فقط لكل مجموعةٍ من السجلات التي تحتوي نفس القيمة، ولضمان الحصول على السجل المطلوب تستخدم عبارة <code>[[SQL/order by|ORDER BY]]</code> في الاستعلام، ليصبح بالشكل:<syntaxhighlight lang="sql"> | تُمكن الاستفادة من عبارة <code>DISTINCT</code> للحصول على سجلٍ واحدٍ فقط لكل مجموعةٍ من السجلات التي تحتوي نفس القيمة، ولضمان الحصول على السجل المطلوب تستخدم عبارة <code>[[SQL/order by|ORDER BY]]</code> في الاستعلام، ليصبح بالشكل:<syntaxhighlight lang="sql"> | ||
SELECT DISTINCT ON ( | SELECT DISTINCT ON (col) cols | ||
FROM | FROM tbl | ||
ORDER BY | ORDER BY cols; | ||
</syntaxhighlight> | </syntaxhighlight> |
المراجعة الحالية بتاريخ 10:04، 30 يناير 2018
تستخدم العبارة DISTINCT
للحصول على قيمٍ فريدةٍ غير مكررة، وغالبًا ما تستخدم في استعلام SELECT
للحصول على سجلات لا تتكرر القيم فيما بينها، إذ يصبح الاستعلام بالشكل الآتي:
SELECT DISTINCT columns
FROM tbl;
مثال
إن كان الجدول الآتي 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 (col) cols
FROM tbl
ORDER BY cols;
مثال
إن كان الجدول 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 |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |