Maison  >  Article  >  base de données  >  Comment supprimer les données en double dans Oracle

Comment supprimer les données en double dans Oracle

青灯夜游
青灯夜游original
2022-03-17 13:10:309198parcourir

Dans Oracle, vous pouvez utiliser le mot-clé Distinct pour supprimer les données en double et filtrer les lignes en double dans l'ensemble de résultats. Ce mot-clé peut garantir que la valeur de la ou des colonnes spécifiées renvoyées dans la clause SELECT est unique. Nom du champ DISTINCT FROM nom de la table de données ;".

Comment supprimer les données en double dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.

Dans Oracle, vous pouvez utiliser le mot-clé Distinct pour supprimer les données en double.

Mot-clé Oracle Distinct

Utilisez la clause DISTINCT dans une instruction SELECT pour filtrer les lignes en double dans l'ensemble de résultats. Il garantit que les valeurs renvoyées dans la ou les colonnes spécifiées dans la clause SELECT sont uniques.
SELECT语句中使用DISTINCT子句来过滤结果集中的重复行。它确保在SELECT子句中返回指定的一列或多列的值是唯一的。

以下说明了SELECT DISTINCT语句的语法:

SELECT DISTINCT
  column_name
FROM
  table_name;

在上面语法中,table_name表的column_name列中的值将进行比较以过滤重复项。

要根据多列检索唯一数据,只需要在SELECT子句中指定列的列表,如下所示:

SELECT
    DISTINCT column_1,
    column_2,
        ...
FROM
    table_name;

在此语法中,column_1column_2column_n中的值的组合用于确定数据的唯一性。

DISTINCT子句只能在SELECT语句中使用。

请注意,DISTINCT不是SQL标准的UNIQUE的同义词。总是使用DISTINCT而不使用UNIQUE是一个好的习惯。

Oracle DISTINCT示例

下面来看看如何使用SELECT DISTINCT来看看它是如何工作的一些例子。

1. Oracle DISTINCT在一列上应用的示例

查看示例数据库中的联系人(contacts)表:

Comment supprimer les données en double dans Oracle

以下示例检索所有联系人的名字:

SELECT first_name
FROM contacts
ORDER BY first_name;

执行上面查询语句,得到以下结果 -

Comment supprimer les données en double dans Oracle

该查询返回了319行,表示联系人(contacts)表有319行。

要获得唯一的联系人名字,可以将DISTINCT关键字添加到上面的SELECT语句中,如下所示:

SELECT DISTINCT first_name
FROM contacts
ORDER BY first_name;

执行上面查询语句,得到以下结果 -

Comment supprimer les données en double dans Oracle

该查询返回了302行,表示联系人(contacts)表有17行是重复的,它们已经被过滤了。

2. Oracle DISTINCT应用多列示例

看下面的order_items表,表的结构如下:

Comment supprimer les données en double dans Oracle

以下语句从order_items表中选择不同的产品ID和数量:

SELECT
    DISTINCT product_id,
    quantity
FROM
    ORDER_ITEMS
ORDER BY product_id;

执行上面查询语句,得到以下结果 -

Comment supprimer les données en double dans Oracle

在此示例中,product_idquantity列的值都用于评估结果集中行的唯一性。

3. Oracle DISTINCT和NULL

DISTINCTNULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。

请参阅示例数据库中的locations表,结构如下所示 -

Comment supprimer les données en double dans Oracle

以下语句从state列中检索具有多个NULL值的数据:

SELECT DISTINCT state
FROM locations
ORDER BY state NULLS FIRST;

执行上面示例代码,得到以下结果 -

Comment supprimer les données en double dans Oracle

正如上图所看到的,只返回一个NULL

Ce qui suit illustre la syntaxe de l'instruction SELECT DISTINCT :

rrreeeDans la syntaxe ci-dessus, dans la colonne column_name de table_name table Les valeurs de seront comparées pour filtrer les doublons.

Pour récupérer des données uniques basées sur plusieurs colonnes, spécifiez simplement la liste des colonnes dans la clause SELECT comme suit : 🎜rrreee🎜Dans cette syntaxe, column_1, La combinaison de les valeurs dans column_2 et column_n sont utilisées pour déterminer le caractère unique des données. 🎜🎜La clause DISTINCT ne peut être utilisée que dans l'instruction SELECT. 🎜🎜Veuillez noter que DISTINCT n'est pas synonyme du standard SQL UNIQUE. C'est une bonne pratique de toujours utiliser DISTINCT au lieu de UNIQUE. 🎜

Exemple Oracle DISTINCT🎜🎜Voici quelques exemples d'utilisation de SELECT DISTINCT pour voir comment cela fonctionne. 🎜

1. Exemple d'Oracle DISTINCT appliqué sur une colonne

🎜Affichez la table des contacts (contacts) dans l'exemple de base de données : 🎜🎜Comment supprimer les données en double dans Oracle🎜🎜Le Exemple suivant pour récupérer les noms de tous les contacts : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜🎜Comment supprimer les données en double dans Oracle🎜🎜La requête a renvoyé les lignes 319, indiquant que le contact (contacts) la table a 319Ligne. 🎜🎜Pour obtenir le nom unique du contact, vous pouvez ajouter le mot-clé DISTINCT à l'instruction SELECT ci-dessus, comme indiqué ci-dessous : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez le résultats suivants-🎜🎜Comment supprimer les données en double dans Oracle 🎜🎜Cette requête a renvoyé 302 lignes, indiquant que 17 lignes dans la table Contacts (contacts) sont des doublons et qu'elles ont été filtrées. 🎜

2. Exemple multi-colonnes d'application Oracle DISTINCT

🎜Regardez le tableau order_items ci-dessous. comme suit : 🎜🎜 🎜🎜Les instructions suivantes proviennent de la table order_items : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜🎜Comment supprimer les données en double dans Oracle🎜🎜Dans cet exemple, product_id et quantité Les valeurs des colonnes sont utilisées pour évaluer le caractère unique des lignes dans l'ensemble de résultats. 🎜

3. Oracle DISTINCT et NULL

🎜DISTINCT traite les valeurs NULL comme des doublons. valeurs. Si vous utilisez l'instruction SELECT DISTINCT pour interroger les données d'une colonne comportant plusieurs valeurs NULL, le jeu de résultats ne contient qu'une seule valeur NULL. 🎜🎜Veuillez vous référer au tableau emplacements dans la base de données exemple, la structure est la suivante-🎜🎜Comment supprimer les données en double dans Oracle🎜🎜L'instruction suivante récupère les données avec plusieurs valeurs NULL ​​à partir de l'état Colonne:🎜rrreee🎜Exécutez l'exemple de code ci-dessus et obtenez les résultats suivants-🎜🎜<img src="https://img.php.cn/upload/image/752/823/448/164749372876482Comment%20supprimer%20les%20donn%C3%A9es%20en%20double%20dans%20Oracle" title="164749372876482Comment supprimer les données en double dans Oracle " alt="Comment supprimer les données en double dans Oracle">🎜🎜Comme vous pouvez le voir dans l'image ci-dessus, seule une valeur <code>NULL est renvoyée. 🎜🎜Tutoriel recommandé : "🎜Tutoriel Oracle🎜"🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn