我的 MySQL 数据库有一个表(cfg),其中包含 4 个字段:id、name、data 和 location 这个表用于服务多个子域(location)。我需要获取给定子域(位置)的每个名称的最新行列表。
示例数据
id name data location
---------------------------
1 color red dc
2 color blue dc
3 size large sj
4 color green sj
5 size small dc
以下查询工作正常,但似乎过于复杂和缓慢。有人有建议吗?
SELECT c1.name, c1.data
FROM (SELECT * FROM cfg WHERE location = "dc") as c1
LEFT JOIN (SELECT * FROM cfg WHERE location = "dc") as c2 ON ( c1.name = c2.name
AND c1.id < c2.id )
WHERE c2.id IS NULL
它会回来
name data
--------------
color blue
size small