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

Sådan søger du efter en kommasepareret værdi

Kortsigtet løsning

Brug funktionen FIND_IN_SET :

WHERE FIND_IN_SET('Queensland', csv_column)

...fordi det er risikabelt at bruge LIKE med jokertegn i begge ender, afhængigt af hvor meget/lidt der matcher (og det sikrer også en bordscanning). Ydeevnen for LIKE med jokertegn på begge sider er på niveau med REGEXP – det betyder dårligt.

Langsigtet løsning

Gem ikke kommaseparerede værdier – brug en rigtig mange-til-mange-relation, der involverer tre tabeller:

Ting

  • ting_id (primær nøgle)

Australske stater

  • State_id (primær nøgle)
  • State_name

Things_to_Auz_States

  • thing_id (primær nøgle, fremmednøgle til THINGS tabel)
  • State_id (primær nøgle, fremmednøgle til AUSTRALIAN_STATES tabel)

Du skal bruge JOINs for at få data ud af de tre tabeller, men hvis du vil vide ting som, hvor mange der er knyttet til en bestemt tilstand eller to bestemte tilstande, er det den rigtige model.



  1. Hvordan indstiller jeg ActiveRecord-forespørgselstimeout for mysql?

  2. Sådan fungerer Replace() i SQLite

  3. MySQL InnoDB:Forskellen mellem "TIL OPDATERING" og "LÅS I DELINGSMODUS"

  4. Hvordan får man antallet af rækker påvirket, mens man udfører MySQL-forespørgsel fra bash?