SELECT
MAX('time'), c_id, message, state, time
FROM message
WHERE receive = 1
GROUP BY c_id
我有一個mysql查詢,我嘗試選擇每個組的最後一行,但它不工作。Mysql爲每個組選擇最後一行
c_id是組。它現在選擇每個組的第一行。
SELECT
MAX('time'), c_id, message, state, time
FROM message
WHERE receive = 1
GROUP BY c_id
我有一個mysql查詢,我嘗試選擇每個組的最後一行,但它不工作。Mysql爲每個組選擇最後一行
c_id是組。它現在選擇每個組的第一行。
首先,您不應該使用單引號轉義列名,因爲它不是字符串文字。
其次,你可以做子查詢,每個子查詢分別獲得每個c_id
的最新時間,並將它與原始表加入以獲取其他列。
SELECT a.*
FROM message a
INNER JOIN
(
SELECT c_id, MAX(time) time
FROM message
GROUP BY c_id
) b ON a.c_id = b.c_id AND
a.time = b.time
或
SELECT a.*
FROM message a
WHERE a.time =
(
SELECT MAX(time) time
FROM message b
WHERE a.c_id = b.c_id
)
+1爲第一個解決方案。 -1爲第二。 YUK! – Strawberry
@Strawberry第二個解決方案來自MySQL文檔。 http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html –
...這是第一個,但第一個是數量級更快! – Strawberry
感謝名單吳宇森!
SELECT a.* FROM survey_question_option a INNER JOIN (
SELECT subordinate_question, MAX(sort) sort
FROM survey_question_option
WHERE question_id=14
GROUP BY subordinate_question
) b ON ((a.subordinate_question = b.subordinate_question) OR (a.subordinate_question IS NULL AND b.subordinate_question IS NULL)) AND
a.sort = b.sort AND a.question_id=14;
可以顯示一些示例數據嗎? –
定義「最後一行」。定義「不工作」。 –