Đây là truy vấn hoạt động mà tôi đã viết:
SELECT i.id, i.relative_url, count(*) as number_of_tags_matched
FROM images i
join tags_image_relations ti on i.id = ti.image_id
join tags t on t.id = ti.tag_id
where t.name in ('google','microsoft','apple')
group by i.id having count(i.id) <= 3
order by count(i.id)
Truy vấn này trước tiên sẽ hiển thị các hình ảnh khớp với cả ba thẻ, sau đó là các hình ảnh khớp với ít nhất 2 trong số 3 thẻ, cuối cùng là ít nhất 1 thẻ.