Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sortuj MySQL według liczby wystąpień

Poniższe zapytanie może podać liczbę wystąpień ciągu znaków pojawiających się w obu kolumnach, tj. Tekst i temat, i posortuje wyniki według kryteriów, ale nie będzie to dobra wydajność rozwiązania, więc lepiej posortować wyniki na poziomie kodu aplikacji

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

Pokaz skrzypiec

Sugerowane przez @lserni czystszy sposób obliczania wystąpień

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. Pobieranie/przechowywanie wszystkich powiązanych aktorów we Freebase

  2. Prawidłowe użycie BoneCP

  3. java.sql.SQLException:Po zakończeniu wyniku ustawionego w mysql

  4. Jaki jest najłatwiejszy sposób wyodrębnienia dat rozpoczęcia i zakończenia sprintu z bazy danych JIRA?

  5. jak używać sql join w mysql