sql >> Database >  >> RDS >> Mysql

Meerdere tekstwaarden in één kolom, de zoekopdracht is nodig om het meest herhaalbare woord te vinden

U kunt dit doen door deel te nemen aan een gefabriceerde nummerreeks die wordt gebruikt om het n-de woord te kiezen. Helaas heeft mysql geen ingebouwde methode voor het genereren van een serie, dus het is een beetje lelijk, maar hier is het:

select
  substring_index(substring_index(title, ' ', num), ' ', -1) word,
  count(*) count
from job j
join (select 1 num union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12) n
on length(title) >= length(replace(title, ' ', '')) + num - 1
group by 1
order by 2 desc

Bekijk een live demo op SQLFiddle uw gegevens gebruiken en uw verwachte output produceren.

Helaas beperkt de beperking van het hard coderen van elke waarde van de nummerreeks ook het aantal woorden van de kolom dat zal worden verwerkt (in dit geval 12). Het maakt niet uit of er te veel getallen in de reeks zijn, en u kunt altijd meer toevoegen om een ​​grotere verwachte invoertekst te dekken.



  1. Wat is de juiste syntaxis voor een Regex zoeken en vervangen met REGEXP_REPLACE in MariaDB?

  2. Snellere Python MySQL

  3. QueryException SQLSTATE [HY000] [1045] Toegang geweigerd voor gebruiker 'homestead'@'localhost' (met wachtwoord:JA)

  4. MySQL 8 maak een nieuwe gebruiker met wachtwoord werkt niet