Angenommen, Sie verwenden MySQL und Ihre Tabelle hat den Namen test
, und unter der Annahme, dass beide Spalten String-Typen sind:
SELECT
t1.id, count(t2.list)
FROM
(test t1 LEFT JOIN test t2 ON
(t2.list LIKE CONCAT('%,', t1.id, ',%')) OR
(t2.list LIKE CONCAT('%,', t1.id)) OR
(t2.list LIKE CONCAT(t1.id, ',%')))
GROUP BY t1.id;
Bitte beachten Sie, dass diese Lösung abhängig von der Anzahl Ihrer Datensätze und der durchschnittlichen Länge der Zeichenfolgen in der list
sehr langsam sein kann Feld.
Wenn Sie etwas schneller brauchen, kann es meiner Meinung nach keine einzelne Abfrage sein. Vielleicht müssten wir dafür eine gespeicherte Prozedur oder Anwendungslogik schreiben oder zusätzliche Tabellen oder Spalten und eine Reihe mehrerer SQL-Anweisungen verwenden.