Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL:Tôi có thể tham chiếu / truy cập dữ liệu hàng hiện tại trong một hàm cửa sổ không?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONCAT trong thủ tục được lưu trữ trả về null

  2. Nhận SUM doanh số bán hàng trong nhiều năm trong các cột

  3. Tôi có nên sử dụng backticks hay không khi thoát từ khóa trong MySQL?

  4. Cách ngăn FluentPDO suy luận sai tên bảng

  5. In tên của tất cả các hoạt động không có số lượng người tham gia tối đa cũng như tối thiểu