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

MySql:Đếm số lần các từ xuất hiện trong một cột

Đây là một giải pháp chỉ sử dụng truy vấn:

SELECT SUM(total_count) as total, value
FROM (

SELECT count(*) AS total_count, REPLACE(REPLACE(REPLACE(x.value,'?',''),'.',''),'!','') as value
FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.sentence, ' ', n.n), ' ', -1) value
  FROM table_name t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(t.sentence) - LENGTH(REPLACE(t.sentence, ' ', '')))
 ORDER BY value

) AS x
GROUP BY x.value

) AS y
GROUP BY value

Đây là fiddle hoạt động đầy đủ: http://sqlfiddle.com/#!2/17481a/ 1

Trước tiên, chúng tôi thực hiện truy vấn để trích xuất tất cả các từ như đã giải thích tại đây bởi @peterm (làm theo hướng dẫn của anh ấy nếu bạn muốn tùy chỉnh tổng số từ được xử lý). Sau đó, chúng tôi chuyển đổi nó thành một truy vấn phụ và sau đó chúng tôi COUNTGROUP BY giá trị của mỗi từ, sau đó thực hiện một truy vấn khác trên đầu từ đó tới GROUP BY không phải các từ được nhóm các trường hợp có thể có các dấu hiệu đi kèm. tức là:xin chào =xin chào! với REPLACE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt để không chuẩn hóa cơ sở dữ liệu mysql là gì?

  2. Hibernate, C3P0, Mysql - Đường ống bị hỏng

  3. Sự khác biệt giữa MySql và MySqli trong PHP

  4. Cách triển khai cơ sở dữ liệu MySQL cục bộ cho Heroku

  5. Cách thực hiện sao lưu gia tăng trong Mysql