sql >> Database >  >> RDS >> Mysql

SQL:Kan ik verwijzen naar/toegang krijgen tot de huidige rij in een vensterfunctie?

Ervan uitgaande dat u MySQL gebruikt, en ervan uitgaande dat uw tabel de naam test heeft , en ervan uitgaande dat beide kolommen stringtypes zijn:

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;

Houd er rekening mee dat deze oplossing erg traag kan zijn, afhankelijk van het aantal records dat u heeft en afhankelijk van de gemiddelde lengte van de strings in de list veld.

Als je iets sneller nodig hebt, denk ik dat het geen enkele vraag kan zijn. Misschien zouden we daarvoor een opgeslagen procedure of een toepassingslogica moeten schrijven, of extra tabellen of kolommen en een reeks van meerdere SQL-instructies moeten gebruiken.



  1. Mysql-dumps en -importen versnellen

  2. node.js en mysql-verbindingspool worden niet geëxporteerd

  3. Bevoegdheden toekennen aan verschillende tabellen met een specifiek voorvoegsel

  4. Automatisch gegenereerd volgnummer beginnend vanaf 001 (ALLEEN VOOR 3 CIJFERS) - PHP / MYSQL