Kann ich das mit reinem MySQL lösen? (Verknüpfen von durch „;“ getrennten Werten in einer Spalte)
Frage:
Gegeben sind zwei Tabellen, eine Benutzertabelle t1 mit einer Ressourcenspalte, die „;“ enthält. ' Wenn Sie getrennte Ressourcen-IDs und eine Ressourcentabelle t2 mit einer ID und Daten haben, möchten Sie t1 und t2 verbinden, um eine Tabelle mit Benutzer- und Ressourcendaten zu erhalten.
Problem:
Sie können keine externen Sprachen verwenden, um die Ergebnisse zu manipulieren, und die Tabelle „user_resources“ ist denormalisiert.
Lösung:
Erstellen Sie eine Tabelle namens „Integerseries“ mit Zahlen von 1 bis eine gewisse Grenze. Verwenden Sie die Funktionen COUNT_IN_SET und VALUE_IN_SET, die die Ressourcenspalte als Array behandeln, um die Tabelle zu normalisieren. Verbinden Sie sich dann mit integerseries, um einzelne Ressourcen-IDs zu extrahieren.
<code class="sql">SELECT user_resource.user, resource.data FROM user_resource JOIN integerseries AS isequence ON isequence.id <= COUNT_IN_SET(user_resource.resources, ';') JOIN resource ON resource.id = VALUE_IN_SET(user_resource.resources, ';', isequence.id) ORDER BY user_resource.user, resource.data</code>
Das obige ist der detaillierte Inhalt vonKann ich mit reinem MySQL Tabellen mit durch Semikolons getrennten Werten in einer Spalte verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!