Heim >Datenbank >MySQL-Tutorial >Wie kann ich Tabellen mit durch Kommas getrennten Werten in einer MySQL-Datenbank effizient verknüpfen?
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!