согласно условия
select individual, max(date_born)
from people
group by individual;
Вот этот запрос возвращает такие данные
|individual|max |
|----------|-----------------------|
|30 |2010-01-01 00:00:00.000|
|10 |2002-01-01 00:00:00.000|
|20 |2007-01-01 00:00:00.000|
А если использовать этот запрос как подзапросс в where, то он возвращает все совпавшие комбинации, небольшой диссонанс случился
select people.name ,individual, date_born
from people
where (individual ,date_born) in (select individual, max(date_born)from people group by individual);
А этот запрос возвращает вот такие данные
|name |individual|date_born |
|-----|----------|-----------------------|
|vika |10 |2002-01-01 00:00:00.000|
|vika |20 |2007-01-01 00:00:00.000|
|oleg |30 |2010-01-01 00:00:00.000|
|vika |20 |2007-01-01 00:00:00.000|
|lesya|20 |2007-01-01 00:00:00.000|
Как видно сдесь повторяются некоторые записи
Как это можно объяснить, есть некое правило что если запрос является подзапросом то он возращает все уникальные строки согласно условию подзапроса?
Запрос в подзапросе возвращает сгруппированные записи. Вопрос в том, что хранится в people
select * from people; |id |individual|date_born |name | |---|----------|-----------------------|-----| |1 |10 |2000-01-01 00:00:00.000|masha| |2 |10 |2001-01-01 00:00:00.000|katya| |3 |10 |2002-01-01 00:00:00.000|vika | |5 |20 |2007-01-01 00:00:00.000|vika | |6 |30 |2010-01-01 00:00:00.000|oleg | |4 |20 |2007-01-01 00:00:00.000|lesya| |7 |20 |2007-01-01 00:00:00.000|vika |
Ну да, если просто запрос с группировкой возвращает уникальные записи согласно запросу, то выходит что тот же самый запрос если использовать как подзапрос вернёт все данные группируя их.
ну сделай distinct и не мучай мозг
мозг мучать полезно для развития
А нельзя сделать так чтобы подзапрос вернул сразу уникальные данные и не дублировал их?
Вот, ниже пример
« аргегация возвращает только уникальные записи согласно условия да все верно «А если использовать этот запрос как подзапросс в where, да, потому что внутри (в подзаросе) уникальные, но сам то запрос без группировки, поэтому НЕ уникальные
Я был уверен что если этот запрос возвращает допустим 3 записи и используя этот же запрос как подзапрос то он тоже вернёт 3 записи, но всё работает иначе. На уровне запроса нужно сделать группировку получается. Но сделать так чтобы подзапрос вернул сразу уникальные записи(без повторения записи если условие совпало) без повторения не получится выходит.
Ты просто хуету подумал Бывает
Кури мануал. Конструкция которую ты заюзал работает совершенно не очевидно.
Обсуждают сегодня