Как создать таблицу с подзапросом?

D
На сайте с 28.06.2008
Offline
997
357

Я все чищу одну таблицу от дублей, составил нужный мне запрос

SELECT C.* FROM ( SELECT shortname, category_id, fullname, id
FROM dd_items
GROUP BY shortname, category_id
HAVING COUNT(*) > 1 ) E
JOIN dd_items C
ON C.shortname = E.shortname
AND C.fullname = E.fullname
AND C.category_id = E.category_id
ORDER BY C.shortname, C.category_id

Как теперь создать таблицу в которую бы вошли только те дубли из запроса выше у которых ID больше

WHERE C.id > E.id
edogs software
На сайте с 15.12.2005
Offline
741
#1

create table wdubles

SELECT C.* FROM ( SELECT shortname, category_id, fullname, id

FROM dd_items

GROUP BY shortname, category_id

HAVING COUNT(*) > 1 ) E

JOIN dd_items C

ON C.shortname = E.shortname

AND C.fullname = E.fullname

AND C.category_id = E.category_id

where c.id>e.id

ORDER BY C.shortname, C.category_id

Так? Или объясните что хотите.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
D
На сайте с 28.06.2008
Offline
997
#2

Спасибо за помощь, таблица создалась! Но я недодумал запрос. Мне то нужно получить в создаваемую таблицу ровно половину дублей, а по условию where c.id>e.id этого не получается.

А можно сюда как-то MIN (ID) вставить?

---------- Добавлено 23.01.2019 в 19:59 ----------

Запрос из первого поста находит более 5000 дублей.

условие where C.ID != E.ID создает таблицу с 467 записями!

Как так? Должна же быть ровно половина? Или где я ошибаюсь?

edogs software
На сайте с 15.12.2005
Offline
741
#3

Dram,

Вы внутренним запросом выбираете только дублирующиеся значения.

Потом когда Вы делаете лефт-джоин, Вы джоините по сути ту же таблицу в которой могут оказаться и не дубли тоже и как следствие можете получить таблицу с недублями.

Смысл вот этого всего от нас ускользает.

Можете описать словами что Вы хотите в итоге получить?

D
На сайте с 28.06.2008
Offline
997
#4

Все спасибо, почистил ....

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий