sql >> Databasteknik >  >> RDS >> Mysql

SQL:Kan jag hänvisa/åtkomst till data den aktuella raden i en fönsterfunktion?

Förutsatt att du använder MySQL och antar att din tabell har namnet test , och förutsatt att båda kolumnerna är strängtyper:

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;

Tänk på att den här lösningen kan vara mycket långsam beroende på antalet poster du har och beroende på den genomsnittliga längden på strängarna i list fältet.

Om du behöver något snabbare tror jag att det inte kan vara en enda fråga. Vi kanske skulle behöva skriva en lagrad procedur eller någon applikationslogik för det, eller använda ytterligare tabeller eller kolumner och en serie av flera SQL-satser.



  1. Hur anger jag en IN-klausul i laravelryggsäcken?

  2. välj distinct(datum) returnerar samma datum flera gånger

  3. MySQL Trigger för att förhindra INSERT under vissa förhållanden

  4. Tabell specificerad två gånger i Procedur, hur fixar jag?