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

SQL:posso fare riferimento/accedere ai dati della riga corrente in una funzione finestra?

Supponendo che tu stia usando MySQL e che la tua tabella abbia il nome test e supponendo che entrambe le colonne siano di tipo stringa:

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;

Tieni presente che questa soluzione potrebbe essere molto lenta a seconda del numero di record che hai e della lunghezza media delle stringhe nell'list campo.

Se hai bisogno di qualcosa di più veloce, penso che non potrebbe essere una singola query. Forse dovremmo scrivere una procedura memorizzata o una logica applicativa per questo, oppure utilizzare tabelle o colonne aggiuntive e una serie di più istruzioni SQL.