sql >> Base de Datos >  >> RDS >> Mysql

SQL:¿Puedo consultar/acceder a los datos de la fila actual en una función de ventana?

Suponiendo que está utilizando MySQL y suponiendo que su tabla tiene el nombre test , y asumiendo que ambas columnas son tipos de cadena:

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;

Tenga en cuenta que esta solución puede ser muy lenta dependiendo de la cantidad de registros que tenga y de la longitud promedio de las cadenas en la list campo.

Si necesita algo más rápido, creo que no podría ser una sola consulta. Tal vez tendríamos que escribir un procedimiento almacenado o alguna lógica de aplicación para eso, o usar tablas o columnas adicionales y una serie de declaraciones SQL múltiples.