sql >> Database >  >> RDS >> Mysql

mysql zoeken naar een catid in een tekstveld

MySQL kan u helpen deze enorme database-ontwerpfouten te omzeilen met de functie FIND_IN_SET . Probeer dit eens:

SELECT * FROM articlepix 
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1

Wat natuurlijk kan worden vereenvoudigd tot:

WHERE published = 1 AND FIND_IN_SET('86', catid)

Omdat de functie alleen 0 teruggeeft wanneer er geen overeenkomst is, maar het kan moeilijker zijn om te begrijpen wat het doet :)




  1. PDO/MySQL-geheugenverbruik met grote resultatenset

  2. Werken met JavaFX-diagram-API's

  3. Hoe controleren we dynamische ordening door een veld in een tabel?

  4. Mysql-prestaties op een tabel met 6 miljoen rijen