sql >> Database >  >> RDS >> Mysql

bepalen meest gebruikte reeks woorden php mysql

Juist, dit loopt als een trein en is beperkt tot het werken met een enkel scheidingsteken, maar hopelijk krijg je een idee.

SELECT aWord, COUNT(*) AS WordOccuranceCount
FROM (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat(SomeColumn, ' '), ' ', aCnt), ' ', -1) AS aWord
FROM SomeTable
CROSS JOIN (
SELECT a.i+b.i*10+c.i*100 + 1 AS aCnt
FROM integers a, integers b, integers c) Sub1
WHERE (LENGTH(SomeColumn) + 1 - LENGTH(REPLACE(SomeColumn, ' ', ''))) >= aCnt) Sub2
WHERE Sub2.aWord != ''
GROUP BY aWord
ORDER BY WordOccuranceCount DESC
LIMIT 10

Dit is afhankelijk van het hebben van een tabel met de naam integers met een enkele kolom genaamd i met 10 rijen met de waarden 0 tot 9. Het kan tot ~1000 woorden aan, maar kan gemakkelijk worden gewijzigd om meer aan te kunnen (maar zal nog meer vertragen).



  1. mysql - INSERT datumbereik in datumkolommen ALS datums niet overlappen met bestaande

  2. MySQL - Unieke externe sleutel

  3. Hoe lees je alle rijen van een enorme tafel?

  4. Weet hoe u een verwijderde tabel in SQL Server 2012 kunt herstellen zonder back-up