Heim >Datenbank >MySQL-Tutorial >Kann ich mit reinem MySQL Tabellen mit durch Semikolons getrennten Werten in einer Spalte verknüpfen?

Kann ich mit reinem MySQL Tabellen mit durch Semikolons getrennten Werten in einer Spalte verknüpfen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 10:27:02916Durchsuche

Can I Join Tables with Semi-colon Separated Values in a Column Using Pure MySQL?

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!

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