我有两个表(国家和鸭子),其中国家/地区表包含世界上的每个国家/地区,鸭子表包含鸭子列表,其中包含用于链接到主要国家/地区的 Country_id 字段。
我正在尝试获取仅包含至少一只鸭子的国家/地区的列表,并从鸭子表中获取该国家/地区评价最高的鸭子的单个匹配记录。到目前为止我有:
SELECT *
FROM country c
INNER JOIN ducks d ON c.id = d.country_id
ORDER BY c.country ASC, d.rating DESC
这会返回每只鸭子的列表,而不仅仅是每个国家的一只鸭子。
如果有人能在这里指出正确的方向,我将不胜感激。我宁愿用 SQL 来完成,也不愿对每个国家/地区进行单独的查询来找出评分最高的鸭子。
SELECT c.*, d.*
FROM country c
INNER JOIN ducks d
ON d.id = --- guessing the ducks Primary Key here
( SELECT dd.id --- and here
FROM ducks dd
WHERE c.id = dd.country_id
ORDER BY dd.rating DESC
LIMIT 1
)
上的索引(country_id, rating, id)
对于 MyISAM 表或(country_id, rating)
对于 InnoDB 表,会有帮助。
此查询将只显示一个duck
每个国家,即使有多个国家具有相同的评级。如果您希望出现平分等级的鸭子,请使用@imm'sGROUP BY
answer.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)