/ / MYSQL Frage - erhalten einzigartigen Wert - MySQL, Datenbank, Funktion, Logik

MYSQL Frage - erhalten einzigartigen Wert - MySQL, Datenbank, Funktion, Logik

Sagen wir, ich habe diese zwei Variablen in MySQL

SET data1 = "1,2,3,apple,4,5";
SET data2 = "apple,orange,5";

Wie erhalte ich die Anzahl der Elemente, die auf diesen beiden Variablen angezeigt werden?

Antworten:

0 für die Antwort № 1

Wenn Sie dies wirklich auf MySQL-Seite tun müssen, können Sie eine gespeicherte Prozedur (oder gespeicherte Funktion) erstellen, in der:

  • temporäre Tabelle erstellen (weil die gespeicherten Routinen von MySQL keine Arrays verarbeiten können, müssen Sie die temporäre Tabelle als Array verwenden)
  • erstellen WÄHREND Führen Sie einen Zyklus aus, um die Zeichenfolgen mit zu analysieren LOKALISIEREN(), LINKS() und RECHT() Funktionen (MySQL-Handbuch: String-Funktionen) jeden Wert in temporäre Tabelle einfügen
  • Führen Sie die benötigte Auswahl (mit Schnittpunkten usw.) aus dieser temporären Tabelle aus

Aber diese Lösung ist wirklich nicht elegant. Das Speichern von Tags in einer separaten Tabelle (wie oben erwähnt, ein Tag pro Zeile) ist viel vorzuziehen.


0 für die Antwort № 2

Es gibt keine Möglichkeit, die Liste zu explodieren und die Elemente zu zählen. Der einzige Weg, um es in Ihrer Muttersprache sprengen zu können, indem Sie den Wert manipulieren:

Beispiel in PHP:

$values = mysql_result();
echo count(explode(",", $values));

Die andere Möglichkeit besteht darin, alle Tags in eine separate Tabelle zu setzen und sie in einer Pivot-Tabelle zu verbinden. Dann können Sie Folgendes tun:

select
count(*)
from
items
join
pivot on pivot.item_id = items.id
join
tags on pivot.tag_id = tags.id
where
item.id = {itemid}