반응형
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
중복 검색 결과를 반환하지 않도록 게시물 ID를 그룹화하려고하는데, 어떤 이유로 GROUP BY p.id
를 사용하더라도 중복이 발생합니다. 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?
해결 방법
GROUP BY
는 쿼리의 세 번째 부분의 결과 만 그룹화합니다. 먼저 GROUP이되고 UNION이됩니다.
전체 쿼리를 하위 쿼리와 GROUP으로 묶습니다.
참조 페이지 https://stackoverflow.com/questions/3901995
반응형
'MySql' 카테고리의 다른 글
MySQL "너무 많은 데이터베이스 연결"의 원인 (0) | 2020.11.03 |
---|---|
MySQL OSX에 Python 2.6 용 MySQLdb 설치 (0) | 2020.11.03 |
MySQL PostgreSQL array_agg와 같은 MYSQL 배열 집계 함수 (0) | 2020.11.03 |
MySQL # 1044- 'somedb'데이터베이스에 대한 사용자 'someusr'@ 'localhost'의 액세스가 거부되었습니다. (0) | 2020.11.03 |
MySQL 서로 다른 데이터베이스 간의 MySQL InnoDB 외래 키 (0) | 2020.11.03 |
댓글