Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :puis-je consulter/accéder aux données de la ligne actuelle dans une fonction de fenêtre ?

En supposant que vous utilisez MySQL et que votre table porte le nom test , et en supposant que les deux colonnes sont de type chaîne :

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;

Veuillez noter que cette solution peut être très lente en fonction du nombre d'enregistrements que vous avez et en fonction de la longueur moyenne des chaînes dans la list champ.

Si vous avez besoin de quelque chose de plus rapide, je pense que cela ne pourrait pas être une seule requête. Peut-être devrions-nous écrire une procédure stockée ou une logique d'application pour cela, ou utiliser des tables ou des colonnes supplémentaires et une série de plusieurs instructions SQL.