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

Đếm số lần xuất hiện của từ trong một cột bảng

@Elad Meidar, tôi thích câu hỏi của bạn và tôi đã tìm ra giải pháp:

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 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. Tại sao trình điều khiển QMYSQL không được tải trong QT5.2?

  2. Số lượng cột không khớp với số lượng giá trị ở hàng 1

  3. TẠO LOẠI trên MySQL

  4. Python:Chuyển đổi tuple thành Chuỗi được phân tách bằng dấu phẩy

  5. Xóa nhiều hàng khỏi bảng bằng id trong Mysql