MySQL có thể giúp bạn giải quyết lỗi thiết kế cơ sở dữ liệu khổng lồ này với hàm FIND_IN_SET
. Hãy thử cái này:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Tất nhiên có thể đơn giản hóa thành:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Vì hàm chỉ trả về 0
khi không có kết quả phù hợp, nhưng có thể khó hiểu hơn nó làm gì :)