Heim  >  Artikel  >  Datenbank  >  So entfernen Sie doppelte Daten in Oracle

So entfernen Sie doppelte Daten in Oracle

青灯夜游
青灯夜游Original
2022-03-17 13:10:309106Durchsuche

In Oracle können Sie das Schlüsselwort Distinct verwenden, um doppelte Daten zu entfernen und doppelte Zeilen im Ergebnissatz zu filtern. Dieses Schlüsselwort kann sicherstellen, dass der Wert der angegebenen Spalte oder Spalten, die in der SELECT-Klausel zurückgegeben werden, eindeutig ist DISTINCT Feldname FROM Datentabellenname;".

So entfernen Sie doppelte Daten in Oracle

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Oracle 11g-Version, Dell G3-Computer.

In Oracle können Sie das Schlüsselwort Distinct verwenden, um doppelte Daten zu entfernen.

Oracle Distinct-Schlüsselwort

Verwenden Sie die DISTINCT-Klausel in einer SELECT-Anweisung, um doppelte Zeilen im Ergebnissatz zu filtern. Es stellt sicher, dass die in der angegebenen Spalte oder Spalten in der SELECT-Klausel zurückgegebenen Werte eindeutig sind.
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)表:

So entfernen Sie doppelte Daten in Oracle

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

SELECT first_name
FROM contacts
ORDER BY first_name;

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

So entfernen Sie doppelte Daten in Oracle

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

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

SELECT DISTINCT first_name
FROM contacts
ORDER BY first_name;

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

So entfernen Sie doppelte Daten in Oracle

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

2. Oracle DISTINCT应用多列示例

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

So entfernen Sie doppelte Daten in Oracle

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

SELECT
    DISTINCT product_id,
    quantity
FROM
    ORDER_ITEMS
ORDER BY product_id;

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

So entfernen Sie doppelte Daten in Oracle

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

3. Oracle DISTINCT和NULL

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

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

So entfernen Sie doppelte Daten in Oracle

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

SELECT DISTINCT state
FROM locations
ORDER BY state NULLS FIRST;

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

So entfernen Sie doppelte Daten in Oracle

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

Das Folgende veranschaulicht die Syntax der SELECT DISTINCT-Anweisung:

rrreeeIn der obigen Syntax in der Spalte column_name des table_name Tabelle Die Werte von werden verglichen, um Duplikate herauszufiltern.

Um eindeutige Daten basierend auf mehreren Spalten abzurufen, geben Sie einfach die Liste der Spalten in der SELECT-Klausel wie folgt an: 🎜rrreee🎜In dieser Syntax ist column_1 die Kombination von Werte in column_2 und column_n werden verwendet, um die Eindeutigkeit der Daten zu bestimmen. 🎜🎜Die DISTINCT-Klausel kann nur in der SELECT-Anweisung verwendet werden. 🎜🎜Bitte beachten Sie, dass DISTINCT kein Synonym für den SQL-Standard UNIQUE ist. Es empfiehlt sich, immer DISTINCT anstelle von UNIQUE zu verwenden. 🎜

Oracle DISTINCT-Beispiel🎜🎜Hier sind einige Beispiele für die Verwendung von SELECT DISTINCT, um zu sehen, wie es funktioniert. 🎜

1. Beispiel für die Anwendung von Oracle DISTINCT auf eine Spalte

🎜Sehen Sie sich die Kontakttabelle (contacts) in der Beispieldatenbank an: 🎜🎜So entfernen Sie doppelte Daten in Oracle🎜🎜Die Folgendes Beispiel zum Abrufen der Namen aller Kontakte: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜🎜So entfernen Sie doppelte Daten in Oracle🎜🎜Die Abfrage gab die Zeilen 319 zurück, was darauf hinweist, dass der Kontakt (contacts) Tabelle hat 319Zeile. 🎜🎜Um den eindeutigen Kontaktnamen zu erhalten, können Sie das Schlüsselwort DISTINCT zur obigen SELECT-Anweisung hinzufügen, wie unten gezeigt: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie The Folgende Ergebnisse: 🎜🎜 🎜🎜Diese Abfrage hat 302 Zeilen zurückgegeben, was darauf hinweist, dass 17 Zeilen in der Tabelle „Kontakte“ (contacts) Duplikate sind und gefiltert wurden. 🎜

2. Beispiel für eine mehrspaltige Oracle DISTINCT-Anwendung

🎜Sehen Sie sich die Tabelle order_items an wie folgt: 🎜🎜 🎜🎜Die folgenden Anweisungen stammen aus order_items“ aus: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse-🎜🎜So entfernen Sie doppelte Daten in Oracle🎜🎜In diesem Beispiel product_id und quantity Die Spaltenwerte werden verwendet, um die Eindeutigkeit der Zeilen im Ergebnissatz zu bewerten. 🎜

3. Oracle DISTINCT und NULL

🎜DISTINCT behandelt NULL-Werte als Duplikat Werte . Wenn Sie die Anweisung SELECT DISTINCT verwenden, um Daten aus einer Spalte abzufragen, die mehrere NULL-Werte enthält, enthält die Ergebnismenge nur einen NULL-Wert. 🎜🎜Bitte beachten Sie die Tabelle locations in der Beispieldatenbank. Die Struktur ist wie folgt: 🎜🎜So entfernen Sie doppelte Daten in Oracle🎜🎜Die folgende Anweisung ruft Daten mit mehreren NULL-Werten aus dem state Spalte: 🎜rrreee🎜Führen Sie den obigen Beispielcode aus und erhalten Sie die folgenden Ergebnisse: 🎜🎜<img src="https://img.php.cn/upload/image/752/823/448/164749372876482So%20entfernen%20Sie%20doppelte%20Daten%20in%20Oracle" title="164749372876482So entfernen Sie doppelte Daten in Oracle " alt="So entfernen Sie doppelte Daten in Oracle">🎜🎜Wie Sie im Bild oben sehen können, wird nur ein <code>NULL-Wert zurückgegeben. 🎜🎜Empfohlenes Tutorial: „🎜Oracle Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonSo entfernen Sie doppelte Daten in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn