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
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 geschriebenselect channel.* from channel where page_id=1 order by channel.new_sort asc , channel.id desc
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!