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

MySQL sắp xếp theo số lần xuất hiện

Truy vấn dưới đây có thể cung cấp cho bạn số lần xuất hiện của chuỗi xuất hiện ở cả hai cột tức là văn bản và chủ đề và sẽ sắp xếp kết quả theo tiêu chí nhưng đây sẽ không phải là một giải pháp hiệu quả tốt hơn nên sắp xếp kết quả ở cấp mã ứng dụng của bạn

SELECT *,
(LENGTH(`Text`) - LENGTH(REPLACE(`Text`, 'Keyword', ''))) / LENGTH('Keyword')
+
(LENGTH(`Subject`) - LENGTH(REPLACE(`Subject`, 'Keyword', ''))) / LENGTH('Keyword') `occurences`
 FROM 
`Table`
 WHERE (Text LIKE '%Keyword%' OR Subject LIKE '%Keyword%')
ORDER BY `occurences`  DESC

Fiddle Demo

Được đề xuất bởi @lserni một cách tính toán số lần xuất hiện rõ ràng hơn

SELECT *,
(LENGTH(`Text`) - LENGTH(REPLACE(`Text`, 'test', ''))) / LENGTH('test') `appears_in_text`,

(LENGTH(`Subject`) - LENGTH(REPLACE(`Subject`, 'test', ''))) / LENGTH('test') `appears_in_subject`,

(LENGTH(CONCAT(`Text`,' ',`Subject`)) - LENGTH(REPLACE(CONCAT(`Text`,' ',`Subject`), 'test', ''))) / LENGTH('test') `occurences`
 FROM 
`Table1`
 WHERE (TEXT LIKE '%test%' OR SUBJECT LIKE '%test%')
ORDER BY `occurences`  DESC

Fiddle Demo 2



  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 workbench:Làm cách nào để xuất cơ sở dữ liệu mysql sang tệp .sql?

  2. Hướng dẫn tự tham gia # 10 trên sqlzoo

  3. Thay đổi bảng MySQL để thêm nhận xét trên các cột

  4. nhóm các giá trị Tandem chính xác từ 2 cột?

  5. Tôi cần lấy danh sách những người dùng đã được gửi tin nhắn trước đó (MySQL)