Следующий запрос возвращает все результаты, но, насколько я понимаю, должен возвращать те же идентификаторы, что и подзапрос. Может ли кто-нибудь объяснить, почему подзапрос, который возвращает все идентификаторы (при отдельном запуске), возвращает все записи
select mya.id from mytable mya WHERE mya.id IN (
SELECT myb.id
FROM mytable myb
GROUP BY myb.mysecondcolumn
)
Подзапрос, запущенный как отдельный запрос, например, вернет 1,5,10,15, но когда я запускаю этот запрос выше, он возвращает 1,2,3,4,5,...
Спасибо!
@JNDPNT Подзапрос и основная таблица совпадают?
Каждый раз, когда вы обнаружите, что используете предложение GROUP BY без каких-либо агрегатных функций, вы можете быть почти уверены, что делаете что-то не так.
Ваш запрос имеет неверный формат. Вам нужна функция агрегации в подзапросе. Возможно:
select mya.id
from mytable mya
where mya.id in (SELECT MIN(myb.id)
FROM mytable myb
GROUP BY myb.mysecondcolumn
);
Это не объясняет вашу настоящую проблему. Я предполагаю, что подзапрос является возвращает все идентификаторы, но только в другом порядке. Вы можете проверить, так ли это, посмотрев на результаты:
SELECT MIN(myb.id)
FROM mytable myb
GROUP BY myb.mysecondcolumn
ORDER BY MIN(myb.id)
Привет, добавление образца данных, которые дают неожиданный результат, поможет, спасибо.