Подзапрос MySQL на себя возвращает все записи - PullRequest
0 голосов
/ 22 мая 2019

Следующий запрос возвращает все результаты, но, насколько я понимаю, должен возвращать те же идентификаторы, что и подзапрос. Может ли кто-нибудь объяснить, почему подзапрос, который возвращает все идентификаторы (при запуске отдельно), возвращает все записи

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, ...

Спасибо!

1 Ответ

0 голосов
/ 22 мая 2019

Ваш запрос некорректен. Вам нужна функция агрегирования в подзапросе. Может быть:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...