sql >> Database teknologi >  >> RDS >> Mysql

MySQL sorterer efter antal forekomster

Nedenstående forespørgsel kan give dig antallet af forekomster af streng, der vises i begge kolonner, dvs. tekst og emne, og vil sortere resultaterne efter kriterierne, men dette vil ikke være en god løsning. P>

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

Foreslået af @lserni en renere måde at beregne hændelser på

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. Hvordan designer man en filmdatabase?

  2. Indstille en kolonne som tidsstempel i MySql workbench?

  3. afsendelse af masse sms stopper i midten

  4. hvordan man forbinder værdi fra en anden tabel med samme betingelsesværdi