|
1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated c
|
|||
---|---|---|---|
#18+
Добрый день. Помогите плиз. Желательно еще чтобы ткнули что конкретно нужно почитать, чтобы понять в чем ошибка. Вот таблица с данными: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Задача вот в чем: У меня на входе есть: user_id Получить нужно через таблицу ELEMENT_USER_GROUP все element_id, которые относятся к этому пользователю. Затем, связывая таблицу ELEMENT_STRINGS получить user_id, но именно тот user_id, который в строке имеет меньший ELEMENT_STRINGS.id Т.е. у нас есть user_id = 4 Код: sql 1. 2. 3. 4.
Делаю вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Приходит такая ошибка: Код: sql 1.
Когда я убираю из селекта: `e_s`.`user_id` AS `user_id_all` То, запрос нормально работает. И приходит MIN(`e_s`.`id`). Так почему же mysql не может выдать мне соответствующую строку с `e_s`.`user_id`? Что я делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2020, 01:12 |
|
1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated c
|
|||
---|---|---|---|
#18+
rubiks Так почему же mysql не может выдать мне соответствующую строку с `e_s`.`user_id`? А если выключить sql_mode=only_full_group_by (в старых версиях и ограничения такого не было), то MySQL выдаст значение из произвольной записи на свое усмотрение в пределах группы по e_s.element_id. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2020, 01:52 |
|
1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated c
|
|||
---|---|---|---|
#18+
rubiks Делаю вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6.
Ну вот давай подумаем. Ты группируешь по `e_s`.`element_id` . Вот сервер взял все объединённые записи, у которых значение этого поля совпадает. В этих записях встречаются разные значения полей `e_s`.`user_id` и `e_s`.`id` . Со вторым полем всё понятно, серверу оставлена чёткая инструкция - взять минимальное значение. он это легко выполнит. А вот с первым полем - неувязочка. Не сказали серверу, что с этим набором значений делать, что именно вернуть - вернуть-то он может только одно значение... Так что у сервера просто нет выбора кроме как сообщить, что он не знает, что делать: rubiks Приходит такая ошибка: #1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'e_s.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2020, 08:17 |
|
1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated c
|
|||
---|---|---|---|
#18+
Akina rubiks Делаю вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6.
Ну вот давай подумаем. Ты группируешь по `e_s`.`element_id` . Вот сервер взял все объединённые записи, у которых значение этого поля совпадает. В этих записях встречаются разные значения полей `e_s`.`user_id` и `e_s`.`id` . Со вторым полем всё понятно, серверу оставлена чёткая инструкция - взять минимальное значение. он это легко выполнит. А вот с первым полем - неувязочка. Не сказали серверу, что с этим набором значений делать, что именно вернуть - вернуть-то он может только одно значение... Так что у сервера просто нет выбора кроме как сообщить, что он не знает, что делать: rubiks Приходит такая ошибка: #1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'e_s.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by Это я понимаю. Не понимаю вот что: MIN(`e_s`.`id`) - вполне конкретный id. У этого поля есть соответсвующая строка. И там есть единственный `e_s`.`user_id`. Почему именно его msql и не возвращает. И как тогда правильно делать запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2020, 13:36 |
|
1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated c
|
|||
---|---|---|---|
#18+
rubiks MIN(`e_s`.`id`) - вполне конкретный id. rubiks И как тогда правильно делать запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2020, 14:50 |
|
1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated c
|
|||
---|---|---|---|
#18+
rubiks Не понимаю вот что: MIN(`e_s`.`id`) - вполне конкретный id. У этого поля есть соответсвующая строка. И там есть единственный `e_s`.`user_id`. Почему именно его msql и не возвращает. Представьте, что в списке селекта будут одновременно и MIN и MAX, значениям которых будут соответствовать 2 конкретные строки. Какую из них должен выдать сервер? А если SUM? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2020, 17:04 |
|
|
start [/forum/topic.php?fid=47&msg=40024012&tid=1828285]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 148ms |
0 / 0 |