sql

SQL JOIN Problem mit reduzierter Zeilenanzahl

Ich habe über das Problem nachgedacht, bei dem die Anzahl der Zeilen (Datensätze) bei Verwendung von SQL JOINs abnimmt. Wenn Sie Tabellen verknüpfen und die ursprüngliche Tabelle nicht die gleichen Spalten wie die verknüpfte Tabelle hat, werden die Spalten, die nicht vorhanden sind, in einem gelöschten Zustand ausgegeben. Daher nimmt die Anzahl der Ausgabezeilen ab, was unbequem ist, wenn Sie alle Informationen aus der Select-Quelltabelle plus die xx-Spalte aus der verknüpften Tabelle für die Regex-Suche mit where einschließen möchten...

Shou Arisaka
2 Min. Lesezeit
24. Nov. 2025

Ich habe über das Problem nachgedacht, bei dem die Anzahl der Zeilen (Datensätze) bei Verwendung von SQL JOINs abnimmt.

Ich bin nicht sehr vertraut mit SQL, daher weiß ich nicht, wie ich es richtig erklären soll, aber wenn Sie Tabellen verknüpfen und die ursprüngliche Tabelle nicht die gleichen Spalten wie die verknüpfte Tabelle hat, werden die Spalten, die nicht vorhanden sind, in einem gelöschten Zustand ausgegeben. Daher nimmt die Anzahl der Ausgabezeilen ab, was unbequem ist, wenn Sie alle Informationen aus der Select-Quelltabelle plus die xx-Spalte aus der verknüpften Tabelle für die Regex-Suche mit where einschließen möchten.

…Ich kann es wirklich nicht richtig erklären.

In solchen Fällen löst die Verwendung von left das Problem.

SELECT u.id, u.url, u.visit_count, u.title FROM urls AS u

36254 Zeilen zurückgegeben

Image

SELECT u.id, u.url, u.visit_count, u.title, kw.term FROM urls AS u
JOIN keyword_search_terms AS kw ON kw.url_id = u.id
JOIN visits AS v ON v.url = u.id

18520 Zeilen zurückgegeben

Image

SELECT u.id, u.url, u.visit_count, u.title, kw.term FROM urls AS u
left JOIN keyword_search_terms AS kw ON kw.url_id = u.id
left JOIN visits AS v ON v.url = u.id

74926 Zeilen zurückgegeben

Image

Deklarieren Sie einfach left vor join.

sql join keep all records - Google Search sql join decreased rows - Google Search SQL Server : left join results in fewer rows than in left table - Stack Overflow

Da wir schon dabei sind, lassen Sie uns etwas tiefer graben.

Es scheint vier Arten von Joins zu geben.

(INNER) JOIN: Gibt Datensätze zurück, die übereinstimmende Werte in beiden Tabellen haben LEFT (OUTER) JOIN: Gibt alle Datensätze aus der linken Tabelle und die übereinstimmenden Datensätze aus der rechten Tabelle zurück RIGHT (OUTER) JOIN: Gibt alle Datensätze aus der rechten Tabelle und die übereinstimmenden Datensätze aus der linken Tabelle zurück FULL (OUTER) JOIN: Gibt alle Datensätze zurück, wenn eine Übereinstimmung in der linken oder rechten Tabelle vorliegt

Das folgende Diagramm ist leicht verständlich.

Image

SQL Joins

mysql - Selecting all items in one table and join with another table, allowing nulls - Stack Overflow

Die vielseitigste scheint LEFT zu sein.

Als ich versuchte, right in sqlite auszuführen, hieß es, dass es nicht unterstützt wird.

RIGHT and FULL OUTER JOINs are not currently supported

Diesen Artikel teilen

Shou Arisaka 24. Nov. 2025

🔗 Links kopieren