Heim > Datenbank > MySQL-Tutorial > Wie finde ich Anrufe von Nummern, die nicht in einer Telefonbuchdatenbank aufgeführt sind?

Wie finde ich Anrufe von Nummern, die nicht in einer Telefonbuchdatenbank aufgeführt sind?

DDD
Freigeben: 2025-01-22 18:41:09
Original
744 Leute haben es durchsucht

How to Find Calls from Numbers Not Listed in a Phone Book Database?

Identifizieren nicht gelisteter Anrufer in MySQL

In diesem Artikel werden verschiedene MySQL-Techniken zur Identifizierung von Telefonanrufen von Nummern demonstriert, die nicht in einer Telefonbuchdatenbank aufgeführt sind. Wir analysieren das Problem anhand von Beispieldaten und bieten effiziente Lösungen.

Szenario:

Wir haben zwei Tabellen: Phone_book und Call.

Phone_bookTabelle:

<code>Phone_book
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1  | John | 111111111111 |
+----+------+--------------+
| 2  | Jane | 222222222222 |
+----+------+--------------+</code>
Nach dem Login kopieren

CallTabelle:

<code>Call
+----+------+--------------+
| id | date | phone_number |
+----+------+--------------+
| 1  | 0945 | 111111111111 |
+----+------+--------------+
| 2  | 0950 | 222222222222 |
+----+------+--------------+
| 3  | 1045 | 333333333333 |
+----+------+--------------+</code>
Nach dem Login kopieren

Ziel:Anrufe von Telefonnummern finden, die nichtin der Phone_bookTabelle enthalten sind.

Lösungsansätze:

Hier sind drei wirksame Methoden, um dies zu erreichen:

1. NOT INKlausel:

Dieser Ansatz schließt Telefonnummern direkt aus der Call-Tabelle aus, die in der Phone_book-Tabelle vorhanden sind. Es ist effizient für kleinere Phone_book Tische.

<code class="language-sql">SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
Nach dem Login kopieren

2. NOT EXISTSUnterabfrage:

Dabei wird eine Unterabfrage verwendet, um zu prüfen, ob in Phone_book eine Telefonnummer vorhanden ist. Es ist im Allgemeinen effizienter als NOT IN für größere Phone_book Tabellen.

<code class="language-sql">SELECT *
FROM Call
WHERE NOT EXISTS (
    SELECT *
    FROM Phone_book
    WHERE Phone_book.phone_number = Call.phone_number
);</code>
Nach dem Login kopieren

3. LEFT OUTER JOIN:

Diese Methode verwendet ein LEFT OUTER JOIN zum Vergleichen von Telefonnummern. Die Abfrage gibt alle Anrufe zurück, aber nur diejenigen mit NULL-Werten in den Phone_book-Spalten stellen nicht aufgeführte Nummern dar.

<code class="language-sql">SELECT *
FROM Call
LEFT OUTER JOIN Phone_book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL;</code>
Nach dem Login kopieren

Auswahl der besten Lösung:

Der optimale Ansatz hängt von der Größe und Struktur Ihrer Datenbank ab. Bei großen Datenmengen werden für eine bessere Leistung normalerweise die Unterabfrage NOT EXISTS oder LEFT OUTER JOIN bevorzugt. Für kleinere Datensätze könnte die NOT IN-Klausel ausreichend sein. Erwägen Sie die Verwendung von EXPLAIN, um Abfrageausführungspläne zu analysieren und die effizienteste Methode auszuwählen.

Das obige ist der detaillierte Inhalt vonWie finde ich Anrufe von Nummern, die nicht in einer Telefonbuchdatenbank aufgeführt sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage