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

Nhiều giá trị văn bản trong một cột, cần truy vấn để tìm từ có thể lặp lại nhiều nhất

Bạn có thể làm điều đó bằng cách kết hợp với một dãy số đã sản xuất được sử dụng để chọn ra từ thứ n. Thật không may, mysql không có phương thức tích hợp nếu tạo một chuỗi, vì vậy nó hơi xấu, nhưng đây là:

select
  substring_index(substring_index(title, ' ', num), ' ', -1) word,
  count(*) count
from job j
join (select 1 num union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12) n
on length(title) >= length(replace(title, ' ', '')) + num - 1
group by 1
order by 2 desc

Xem bản trình diễn trực tiếp trên SQLFiddle sử dụng dữ liệu của bạn và tạo ra kết quả mong đợi.

Đáng buồn thay, giới hạn của việc phải mã hóa mọi giá trị của chuỗi số cũng giới hạn số từ của cột sẽ được xử lý (trong trường hợp này là 12). Sẽ không thành vấn đề nếu có quá nhiều số trong chuỗi và bạn luôn có thể thêm nhiều số hơn để bao gồm văn bản đầu vào dự kiến ​​lớn hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL tất cả các mối quan hệ cha-con

  2. Làm cách nào để sử dụng toán tử IN nhưng với điều kiện AND

  3. Mysql - cập nhật t1 với số hàng t2 trong đó hai cột giống như đối với t1

  4. Định dạng số thành 2 chữ số thập phân

  5. Có giảm hiệu suất nếu có quá nhiều cột trong một bảng không?