sql >> Database teknologi >  >> RDS >> Mysql

SQL:Kan jeg henvise/få adgang til data i den aktuelle række i en vinduesfunktion?

Forudsat at du bruger MySQL, og forudsat at din tabel har navnet test , og forudsat at begge kolonner er strengtyper:

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;

Vær opmærksom på, at denne løsning kan være meget langsom afhængigt af antallet af poster du har og afhængigt af den gennemsnitlige længde af strengene i list felt.

Hvis du har brug for noget hurtigere, tror jeg, det ikke kunne være en enkelt forespørgsel. Måske skulle vi skrive en lagret procedure eller en applikationslogik til det, eller bruge yderligere tabeller eller kolonner og en række af flere SQL-sætninger.



  1. Graver dybere ind i Django-migreringer

  2. Hvad er JDBC-modstykket til Postgres' \connect-kommando?

  3. Syntaksundtagelse på trigger med flere sætninger med MySQL og JDBC

  4. FEJL:Forbindelsen er i autoCommit-tilstand