Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL mengurutkan berdasarkan jumlah kemunculan

Kueri di bawah ini dapat memberi Anda jumlah kemunculan string yang muncul di kedua kolom yaitu teks dan subjek dan akan mengurutkan hasil berdasarkan kriteria tetapi ini tidak akan menjadi solusi kinerja yang baik, lebih baik mengurutkan hasil di tingkat kode aplikasi Anda

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

Demo Biola

Disarankan oleh @lserni cara penghitungan kejadian yang lebih bersih

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. Bagaimana cara mengubah semua tabel di database saya ke set karakter UTF8?

  2. Bisakah saya mengimpor struktur yang diperbarui ke tabel MySQL tanpa kehilangan kontennya saat ini?

  3. Cara membuat tabel SEMENTARA di laravel

  4. Menggunakan pernyataan IF di MySQL untuk memperbarui atau menyisipkan tanpa Prosedur Tersimpan?

  5. Bagaimana cara membuat website dengan Java?