Giả sử rằng bạn đang sử dụng MySQL và giả sử rằng bảng của bạn có tên test
và giả sử rằng cả hai cột đều là kiểu chuỗi:
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;
Xin lưu ý rằng giải pháp này có thể rất chậm tùy thuộc vào số lượng bản ghi bạn có và tùy thuộc vào độ dài trung bình của các chuỗi trong list
trường.
Nếu bạn cần thứ gì đó nhanh hơn, tôi nghĩ đó không thể là một truy vấn duy nhất. Có lẽ chúng ta sẽ phải viết một thủ tục được lưu trữ hoặc một số logic ứng dụng cho việc đó, hoặc sử dụng các bảng hoặc cột bổ sung và một chuỗi nhiều câu lệnh SQL.