SELECT p.id, p.title, p.uri, 'post' AS search_type
FROM `posts` AS p
WHERE title LIKE "%logo%"
UNION ALL
SELECT p.id, p.title, p.uri, 'tag' AS search_type
FROM posts AS p
INNER JOIN post_tags AS pt ON pt.post_id = p.id
INNER JOIN tags AS t ON pt.tag_id = t.id
WHERE t.title LIKE "%logo%"
UNION ALL
SELECT p.id, p.title, p.uri, 'category' AS search_type
FROM posts AS p
INNER JOIN post_categories AS pc ON pc.post_id = p.id
INNER JOIN categories AS c ON pc.category_id = c.id
WHERE c.title LIKE "%logo%"
GROUP BY p.id
LIMIT 30
Tôi đang cố gắng nhóm các ID bài đăng để không trả lại kết quả tìm kiếm trùng lặp, nhưng vì lý do nào đó có trùng lặp ngay cả khi tôi sử dụng GROUP BY p.id
. Ai đó có thể cho tôi biết tôi đang làm gì sai?MySQL - Tìm kiếm với UNION ALL and GROUP BY
Bạn chỉ muốn một kết quả mỗi p.id, bất kể SEARCH_TYPE? –
Hey Mark, không, tôi muốn tất cả các kết quả. Search_type chỉ cho phép tôi xác định kết quả tìm kiếm đến từ đâu (bài đăng, thẻ hoặc danh mục). – Torez