Подзапрос MySQL сам по себе возвращает все записи

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

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

Спасибо!

Привет, добавление образца данных, которые дают неожиданный результат, поможет, спасибо.

TheWildHealer 22.05.2019 15:45

@JNDPNT Подзапрос и основная таблица совпадают?

Rahul Singh 22.05.2019 15:46

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

Strawberry 22.05.2019 16:03
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
3
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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)

Другие вопросы по теме