У меня возникла проблема с попыткой вытащить одно действие для каждого пользователя с наименьшим приоритетом, приоритет основан на содержимом других столбцов и является целым числом,получить идентификатор строки с наименьшим значением, группу другим столбцом
Это первоначальный запрос:
SELECT
CASE
...
END AS dummy_priority,
id,
user_id
FROM
actions
результат:
id user_id priority
1 2345 1
2 2345 3
3 2999 5
4 2999 2
5 3000 10
Желаемый результат:
id user_id priority
1 2345 1
4 2999 2
5 3000 10
После того, что я хочу, я попытался
SELECT x.id, x.user_id, MIN(x.priority)
FROM (
SELECT
CASE
...
END AS priority,
id,
user_id
FROM
actions
) x
GROUP BY x.user_id
Который не работал
Код ошибки: 1055. Expression # 1 из списка SELECT, не в GROUP BY пункта и содержит неагрегированный столбец «x.id», который не является , функционально зависимым от столбцов в предложении GROUP BY;
Большинство примеров этого я нашел доставали только user_id и приоритет, а затем делает внутреннее соединение с обоими из них, чтобы получить строку, но я не могу этого сделать, так как (приоритет, user_id) не уникальный
простой пример проверяемым бы
CREATE TABLE `actions` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`priority` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `actions` (`id`, `user_id`, `priority`) VALUES
(1, 2345, 1),
(2, 2345, 3),
(3, 2999, 5),
(4, 2999, 2),
(5, 3000, 10);
как извлечь желаемый результат (пожалуйста, держите в виду, что эта таблица подзапроса)?
Как пытаться продать палку без леденца – Strawberry
Что вы имеете в виду? это недостаток информации? – Tarik
Да. См. Http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry