Heim  >  Artikel  >  Datenbank  >  So verwenden Sie Inner Join und Left Join in MySQL

So verwenden Sie Inner Join und Left Join in MySQL

WBOY
WBOYnach vorne
2023-06-01 19:37:25963Durchsuche

Unterschiede

Die Rückgaben sind unterschiedlich
1. Der innere Join gibt nur Zeilen mit gleichen Join-Feldern in den beiden Tabellen zurück
2. Die Anzahl der linken Joins ist kleiner oder gleich der Anzahl der Datensätze in der linken und rechten Tabelle.

Unterschiedliche Zahlen
1. Innerer Join gibt alle Datensätze in der linken Tabelle und Datensätze zurück, die dem Join-Feld in der rechten Tabelle entsprechen.
2. Die Anzahl der linken Verknüpfungen entspricht der Anzahl der Datensätze in der linken Tabelle.

1 Die Datensatzattribute, die für die innere Verknüpfung nicht ausreichen, werden direkt verworfen . Die Datensatzattribute, die für den linken Join nicht ausreichen, werden mit NULL gefüllt. inneres Join-Szenario

Entwerfen Sie zwei Tabellen:

Kanalkanaltabelle: Kanal-ID, Kanalname usw.

  • Modulmodultabelle: Modul-ID, Modulname, Kanal-ID.

  • Wenn auf der Seite Kanäle angezeigt werden, gibt es möglicherweise einen neuen Kanal, aber kein Modul. Zu diesem Zeitpunkt kann der innere Join nicht verwendet werden, da das neu hinzugefügte Modul sonst nicht abgefragt werden kann. Verwenden Sie daher den linken Join

     select channel.* from  channel left join modules on channel.id = modules.channel_id
     where page_id=1
     group by channel.id order by channel.new_sort asc , channel.id desc
  • 1 Unter dem Seitentyp wird in der Kanaltabelle definiert, welcher Seitentyp 2 ist. Einer Kanal-ID können mehrere Module zugeordnet werden, daher muss sie entsprechend der Kanal-ID gruppiert werden Legen Sie die Sortierung der Kanäle fest. Außerdem sollte beim Sortieren derselben der zuerst erstellte Kanal zuerst angezeigt werden.

In den folgenden Fällen werden neu erstellte Kanäle nicht angezeigt und Kanäle ohne Module werden ebenfalls nicht angezeigt.

select channel.*  from channel inner join modules on channel.id=modules.channel_id
where page_id=1 group by channel.id order by channel.new_sort asc , channel.id desc

Abschließend: Ich habe einige Zweifel, dass der Kanal nur kanalbezogene Informationen anzeigt und nicht die zugehörigen Modulinformationen verwendet, daher bin ich der Meinung, dass dies den Anforderungen gerecht werden kann. Ich werde es aktualisieren, wenn ich später irgendwelche Probleme finde.

Ich bin schon einmal auf ein Inner-Join-Szenario gestoßen und werde es später hinzufügen ~

Inner-Join-Szenario

Fügen Sie eine neue Richtlinientabelle „policy_lib“ hinzu und erstellen Sie dann eine Zwischentabelle „channel_policy“, um die Zuordnung zwischen dem Kanalkanal und der „policy_lib“ aufzuzeichnen Richtlinientabelle.

Dann wird die SQL natürlich so geschrieben

 select channel.* from  channel
 where page_id=1 order by channel.new_sort asc , channel.id desc

Bei Verwendung von Inner Join ist die Ergebnisabfrage offensichtlich nicht leer. Wenn Sie Left Join verwenden, befinden sich links und rechts Daten, falls die Tabelle fehlerhaft ist Wenn es sich um Raumzeit handelt, müssen Sie berücksichtigen, ob die Verfügbarkeit während der Verarbeitung eindeutig unangemessen ist.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Inner Join und Left Join in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen