الفرق بين المراجعتين لصفحة: «SQL/distinct»
< SQL
لا ملخص تعديل |
ط تعديل الأمثلة |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 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> | ||
سطر 194: | سطر 194: | ||
* [https://sqlite.org/lang_select.html#distinct توثيق DISTINCT في محرك SQLite] | * [https://sqlite.org/lang_select.html#distinct توثيق DISTINCT في محرك SQLite] | ||
* [https://technet.microsoft.com/en-us/library/ms187831(v=sql.105).aspx توثيق DISTINCT في محرك SQLServer] | * [https://technet.microsoft.com/en-us/library/ms187831(v=sql.105).aspx توثيق DISTINCT في محرك SQLServer] | ||
[[تصنيف:SQL]] | [[تصنيف:SQL|{{SUBPAGENAME}}]] | ||
[[تصنيف:SQL Operators]] | [[تصنيف:SQL Operators|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 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 |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |