inik23
@inik23
типа разработчик

Как правильно составить запрос?

Всем привет.
Есть таблица такого вида
-----------------------------
 id | category_id |  title  |
-----------------------------
1  |          1         | title1 |
----------------------------
2  |          2         | title1 |
----------------------------
3  |          3         | title3 |


Необходимо найти все записи где одинаковое поле title но разные category_id

пробую так но находит не то что надо
SELECT * FROM pages WHERE title IN (SELECT title FROM pages GROUP BY title HAVING COUNT(*)>1) ORDER BY title

Спасибо.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
idShura
@idShura
Если в вашу таблицу с примером добавить еще одну строку
INSERT INTO PAGES (ID, CATEGORY_ID, TITLE) VALUES (4, 3, 'title3');

, то запрос Rsa97 вернет неправильный ответ.

Попробуй вот этот запрос:
SELECT ID, 
       CATEGORY_ID, 
       TITLE 
  FROM PAGES 
 WHERE TITLE IN (SELECT TITLE FROM PAGES GROUP BY TITLE HAVING COUNT(*)>1) 
 GROUP BY TITLE,
          CATEGORY_ID
HAVING COUNT(*)=1;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT * 
  FROM (
    SELECT `title`
      FROM `table`
      GROUP BY `title`
      HAVING COUNT(DISTINCT `category_id`) > 1
  ) AS `c`
  JOIN `table` AS `t` USING (`title`)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы