我的MySQL数据库有一个包含4个字段的表(cfg):id,名称,数据和位置 这一个表用于服务几个子域(位置)。我需要获取给定子域(位置)的每个名称的最新行列表。复杂的SQL连接查询 - 获取最新的行
实例数据
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
非常感谢。这个窍门! – Nathan 2011-12-24 16:47:53