MySQL kan hjälpa dig kringgå detta enorma databasdesignfel med funktionen FIND_IN_SET
. Prova detta:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Vilket givetvis kan förenklas till:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Eftersom funktionen endast returnerar 0
när det inte finns någon match, men det kan vara svårare att förstå vad det gör :)