Heim >Datenbank >MySQL-Tutorial >Wie kann ich Tabellen mit durch Kommas getrennten Werten in einer MySQL-Datenbank effizient verknüpfen?

Wie kann ich Tabellen mit durch Kommas getrennten Werten in einer MySQL-Datenbank effizient verknüpfen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 14:17:16576Durchsuche

How Can I Efficiently Join Tables with Comma-Separated Values in a MySQL Database?

Tabellen mit durch Kommas getrennten Werten in einer Spalte verbinden

Beim Umgang mit Datenbanken ist es oft notwendig, Tabellen basierend auf Spalten mit Kommas zu verbinden -getrennte Werte. In diesem speziellen Fall versuchen Sie, Benutzernamen abzurufen, bei denen eine durch Kommas getrennte Spalte in Tabelle C („Benutzer-IDs“) mit einem bestimmten Suchbegriff übereinstimmt.

SQL-Abfrage mit Teilzeichenfolgenextraktion

Bei Ihrer ersten Abfrage wurde versucht, mithilfe einer Unterabfrage den ersten Wert aus der durch Kommas getrennten Zeichenfolge in der Spalte „userids“ von Tabelle C zu extrahieren. Dieser Ansatz ist jedoch ineffizient und unzuverlässig, da er davon ausgeht, dass der gewünschte Wert immer der erste in der Zeichenfolge ist.

Verbesserte Abfrage mit find_in_set

Eine bessere Lösung beinhaltet die Verwendung Die Funktion find_in_set von MySQL, mit der Sie innerhalb einer durch Kommas getrennten Zeile nach einem bestimmten Wert suchen können string:

SELECT *
FROM tblC c
JOIN tblB b ON (find_in_set(b.userid, c.userids) > 0)
WHERE c.nname = "new1"

Diese Abfrage ruft effizient alle Benutzernamen ab, die den Zeilen in Tabelle C zugeordnet sind, in denen die Spalte „nname“ mit „new1“ übereinstimmt.

Normalisierte Schemaalternative

Es ist jedoch wichtig zu beachten, dass das Speichern von durch Kommas getrennten Werten in einer Spalte keine empfohlene Vorgehensweise ist. Für eine bessere Datenintegrität und Leistung ist es vorzuziehen, das Schema durch die Einführung einer Verbindungstabelle zu normalisieren.

Im bereitgestellten Beispiel können Sie eine neue Verbindungstabelle (tblC_user) mit zwei Spalten erstellen: c_id (Fremdschlüssel zur Tabelle). C) und Benutzer-ID (Fremdschlüssel für Tabelle B). Dadurch können Sie die Viele-zu-Viele-Beziehung zwischen den Tabellen C und B darstellen, ohne dass durch Kommas getrennte Zeichenfolgen erforderlich sind.

Normalisierte Abfrage

Verwendung der normalisierten Schema können Sie die folgende Abfrage verwenden, um die gewünschten Ergebnisse abzurufen:

SELECT *
FROM tblC c
JOIN tblC_user cu ON (c.id = cu.c_id)
JOIN tblB b ON (b.userid = cu.userid)
WHERE c.nname = "new1"

Diese Abfrage bietet eine effizientere und zuverlässigere Möglichkeit um Tabellen basierend auf durch Kommas getrennten Werten zu verbinden.

Das obige ist der detaillierte Inhalt vonWie kann ich Tabellen mit durch Kommas getrennten Werten in einer MySQL-Datenbank effizient verknüpfen?. 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