February 2026

S M T W T F S
1234567
891011121314
15161718192021
22232425262728

Style Credit

Expand Cut Tags

No cut tags
Wednesday, September 22nd, 2010 12:09 am
Знатокам (My)SQL: имеется некий большой JOIN, вытаскивающий данные из нескольких сцеплённых таблиц (типа несколько обьектов, связанных many-to-many). Указанный запрос возвращает список IDs некоторых обьектов, согласно заданым отношениям, но в нём возможны повторения, а надо список без. Для того, чтобы повторения убрать, можно написать SELECT distinct table1.id и т.п. Но по некоторым причинам, в которые мы вдаваться не будем, это решение в данном случае не идеально. Можно написать subquery с IN и перетащить часть обьектов туда, но заботами разработчиков MySQL subqueries в нём работают так, что не к ночи будь помянуты. Так вот - есть ли ещё какой-то способ обеспечить уникальность, о котором я не подумал? (Обрабатывать на клиентской стороне не предлагать, это тоже, увы, не подходит по причинам... ну вы поняли).
Wednesday, September 22nd, 2010 12:50 pm (UTC)
Из мануала

Because DISTINCT may use GROUP BY ...
In most cases, a DISTINCT clause can be considered as a special case of GROUP BY. For example, the following two queries are equivalent ...

можно узнать чем DISTINCT вам не подходит и увидеть сам запрос ?