Heim > Artikel > Backend-Entwicklung > Mehrere durch Kommas getrennte Werte in einem Feld rufen alle IDs ab, die einen bestimmten Wert in diesem Feld der Datentabelle enthalten
Beispiel:
id user_id 1 2,32,4 2 3,63,2 3 4,62,7
Nehmen Sie das user_id
heraus, das 2 in id
enthält, das Ergebnis => 1, 2 (enthält eine separate 2)
Die Like-Methode funktioniert offensichtlich nicht
Kurze und schöne SQL-Anweisung
Siehe das eine im Erdgeschoss. Es wird groß darüber gesprochen, die Feldstruktur zu ändern, aber dies ist derzeit möglicherweise nicht zulässig. Da das gesamte Projekt offen ist, kann es zu unvorhersehbaren Problemen aufgrund von Änderungen in der Feldstruktur kommen, wenn ich an dieser Stelle umziehe und diese Stelle an anderen Stellen aufgerufen wird.
Geben Sie eine Kastanie:
id user_id 1 2,32,4 2 3,63,2 3 4,62,7
Nehmen Sie das user_id
heraus, das 2 enthält id
, result =》1,2 (enthält eine separate 2)
Die Like-Methode funktioniert offensichtlich nicht
Prägnant und schöne SQL-Anweisung
Ich habe unten jemanden gesehen, der viel gesagt hat über das Ändern der Feldstruktur. Dies ist derzeit möglicherweise nicht zulässig. Da das gesamte Projekt offen ist, kann es zu unvorhersehbaren Problemen aufgrund von Änderungen in der Feldstruktur kommen, wenn ich an dieser Stelle umziehe und diese Stelle an anderen Stellen aufgerufen wird.
SELECT id FROM table WHERE find_in_set('2',user_id);
id user_id
1 ,2,32,4,
2 ,3,63,2,
3 , 4,62,7,
Wenn Sie es so ändern, ist es einfach, es zu tun, und Sie können es tun
Tatsächlich ist es besser, die Zwischentabelle zu teilen
Tabellenprodukt
id 1 2 3
Tabellenbenutzer
user_id 2 3 4 6 32 62 63
Zwischentabelle
product_id user_id 1 2 1 32 1 4 2 2 2 63 2 3 3 4 3 62 3 7
Es wird weiterhin empfohlen, die Tabellenstruktur zu ändern! Das ist wirklich nicht einfach. Oder ändern Sie die Datenspeichermethode wie
id user_id 1 [2],[32],[4] 2 [3],[63],[2] 3 [4],[62],[7]
und verwenden Sie Fuzzy-Abfrage. Es wird jedoch weiterhin empfohlen, die Tabellendaten zu ändern
mysql5.7 hat den JSON-Typ