MySQL dapat membantu Anda mengatasi kesalahan desain basis data yang besar ini dengan fungsi FIND_IN_SET
. Cobalah ini:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Yang tentunya bisa disederhanakan menjadi:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Karena fungsi hanya mengembalikan 0
ketika tidak ada kecocokan, tetapi mungkin lebih sulit untuk memahami apa fungsinya :)