English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

جملة SQL DISTINCT

في هذا الدليل، ستتعلم كيفية إزالة القيم المكررة من مجموعة النتائج.

检索不同的值

从数据库表中获取数据时,结果集可能包含重复的行或值。 如果要删除这些重复的值,可以在SELECT关键字之后直接指定关键字DISTINCT,如下所示:

语法

DISTINCT子句用于从结果集中删除重复的行:

SELECT DISTINCT column_list FROM table_name;

在这里,column_list是用逗号分隔的要获取其值的数据库表的列名或字段名的列表(例如nameagecountry等)。

ملاحظة: DISTINCT子句的行为类似于UNIQUE约束,除了它对待null的方式不同。 两个NULL值被认为是唯一的,而同时又不认为它们是彼此不同的。

让我们看一些示例,演示其实际工作方式。

假设我们在数据库中有一个customers表,其中包含以下记录:

+---------+--------------------+-----------+-------------+
| cust_id | cust_name          | city      | postal_code |
+---------+--------------------+-----------+-------------+
|       1 | Maria Anders       | Berlin    | 12209       |
|       2 | Fran Wilson        | Madrid    | 28023       |
|       3 | Dominique Perrier  | Paris     | 75016       |
|       4 | Martin Blank       | Turin     | 10100       |
|       5 | Thomas Hardy       | Portland  | 97219       |
|       6 | Christina Aguilera | Madrid    | 28001       |
+---------+--------------------+-----------+-------------+

الآن، قم بتنفيذ الجملة التالية، التي تعود بجدول هذاcityكل سطر في العنصر.

SELECT city FROM customers;

بعد تنفيذ الأمر، ستحصلون على الناتج التالي:

+-----------+
| city      |
+-----------+
| Berlin    |
| Madrid    |
| Paris     |
| Turin     |
| Portland  |
| Madrid    |
+-----------+

إذا نظرتم بعناية إلى الناتج، سترون أن المدينة "Madrid" ظهرت مرتين في نتائجنا، هذا ليس جيدًا. حسنًا، دعونا نحل هذه المشكلة.

حذف البيانات المكررة

يستخدم هذا الجملة لـ DISTINCT فيcustomersيتم إنشاء قائمة بجميع المدن في الجدول.

SELECT DISTINCT city FROM customers;

بعد تنفيذ الأمر المذكور أعلاه، ستحصل على النتيجة التالية:

+-----------+
| city      |
+-----------+
| Berlin    |
| Madrid    |
| Paris     |
| Turin     |
| Portland  |
+-----------+

كما ترون، لا توجد قيم مكررة في الناتج هذه المرة.

ملاحظة:إذا تم استخدام جملة SELECT DISTINCT في عمود يحتوي على عدة قيم NULL، فإن SQL يحتفظ بقيمة NULL واحدة ويزيل بقية القيم من الناتج، لأن DISTINCT يعتبر جميع القيم NULL كقيم متشابهة.