我遇到了一個問題,試圖爲每個用戶提供一個動作,使其具有最低優先級,優先級基於其他列的內容並且是一個整數,獲取最小值的行的ID,由另一列組
這是初始的查詢:
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
沒有工作
錯誤代碼:SELECT列表1055表達式#1是不是在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