MySQL DISTINCT/GROUP 通过 MAX()
MySQL DISTINCT/GROUP BY with MAX()
问题:我正在尝试拉取所有记录的列表,DISTINCT
使用该名称的最高添加时间戳编号按名称。我在 PHP fetch
.
中使用所有结果列
有一个简单的数据库,记录如下:
---ID-------NAME-------VERSION-----------ADDED-------
| 500 | TheSame | 1 | UNIX_TIMESTAMP() |
| 501 | TheSame | 2 | UNIX_TIMESTAMP() |
| 502 | SameName | 30 | UNIX_TIMESTAMP() |
| 503 | SameName | 31 | UNIX_TIMESTAMP() |
-----------------------------------------------------
ID
是自增。尝试了很多不同的东西,可以让 DISTINCT
或 GROUP BY
正常工作,但我最终得到了最低记录(例如:SameName
记录 #502 和版本 #30,当它应该是 #503 和版本 #31。
没有 JOIN
或这里发生的任何事情,所以这应该很简单。
试一试(获取最新版本号的可能方法:
SELECT NAME, COUNT(*) AS VERSION
FROM TABLENAME
GROUP BY NAME
如果以上不符合要求,试试这个:
SELECT * FROM
(
SELECT
NAME, ID, VERSION, ADDED
FROM
TABLENAME
ORDER BY
NAME, VERSION DESC, ID, ADDED
) myAlias
GROUP BY NAME
问题:我正在尝试拉取所有记录的列表,DISTINCT
使用该名称的最高添加时间戳编号按名称。我在 PHP fetch
.
有一个简单的数据库,记录如下:
---ID-------NAME-------VERSION-----------ADDED-------
| 500 | TheSame | 1 | UNIX_TIMESTAMP() |
| 501 | TheSame | 2 | UNIX_TIMESTAMP() |
| 502 | SameName | 30 | UNIX_TIMESTAMP() |
| 503 | SameName | 31 | UNIX_TIMESTAMP() |
-----------------------------------------------------
ID
是自增。尝试了很多不同的东西,可以让 DISTINCT
或 GROUP BY
正常工作,但我最终得到了最低记录(例如:SameName
记录 #502 和版本 #30,当它应该是 #503 和版本 #31。
没有 JOIN
或这里发生的任何事情,所以这应该很简单。
试一试(获取最新版本号的可能方法:
SELECT NAME, COUNT(*) AS VERSION
FROM TABLENAME
GROUP BY NAME
如果以上不符合要求,试试这个:
SELECT * FROM
(
SELECT
NAME, ID, VERSION, ADDED
FROM
TABLENAME
ORDER BY
NAME, VERSION DESC, ID, ADDED
) myAlias
GROUP BY NAME