Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL:Posso consultar/acessar dados da linha atual em uma função de janela?


Supondo que você esteja usando o MySQL e supondo que sua tabela tenha o nome test , e supondo que ambas as colunas sejam do tipo string:
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;

Esteja ciente de que esta solução pode ser muito lenta dependendo do número de registros que você possui e dependendo do comprimento médio das strings na list campo.

Se você precisa de algo mais rápido, acho que não poderia ser uma única consulta. Talvez tivéssemos que escrever um procedimento armazenado ou alguma lógica de aplicativo para isso, ou usar tabelas ou colunas adicionais e uma série de várias instruções SQL.