当前位置: 首页 > 面试题库 >

MySQL返回联接表的第一行

廖弘伟
2023-03-14
问题内容

我有两个表(“国家/地区”和“鸭子”),其中“国家/地区”表包含世界上每个国家/地区,并且“鸭子”表中有一个鸭子列表,其中有一个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的GROUPBY答案。



 类似资料:
  • 我有这个存储过程。我的问题是当记录不存在于机构表是不返回任何东西。我想说即使没有记录在机构仍然返回,所以我已经添加了左外JOIN机构和_Agency=IsNull(U._Agency,")在顶部。但仍然不返回值。它是返回值时,我采取A._IsActive=1在最后一行出来。我该怎么办id A._IsActive没有值仍然返回。我尝试了相同的ISNull但不工作。

  • 它还会返回这个表,遗漏一些行(我希望它给出所有流派,而不仅仅是演员在其中扮演角色的流派): 有趣的是,它为“动画”返回了“0”,但为“儿童”或“喜剧”没有行,这是我正在寻找的结果(所有流派都返回了)。我做错了什么?

  • 问题内容: 我对此有疑问,我希望这是可能的。 我有一个来自wordpress的表,用于存储发布的元数据,因此无法(轻松)更改列和字段数据。 因此表结构为 post_id meta_key meta_value meta键存储字段名称和meta_value,即该字段的值。我需要根据帖子ID对它们进行分组,以便可以在两个字段之间进行比较。我尝试了各种! 因此数据如下: 我已经完成了GROUP_CONC

  • 问题内容: 我有这个简单的PHP代码: 它仅返回以下内容: 我的表中有3500多行,并且在PhpMyAdmin中运行SQL效果很好。 问题答案: 您的示例拼写错误 每次调用时以及行外时都会返回一行。通过在条件中为其分配变量来利用它,以发挥您的优势。在循环中,将是当前行。

  • 问题内容: 我想在具有多个联接的语句中更新表。虽然我知道联接的顺序并不重要(除非您使用的是优化程序提示),但我还是以某种最直观的方式对它们进行了排序。但是,这导致我要更新的表不是我开始使用的表,并且我无法更新它。 我想做的一个虚拟例子是: 这里有许多关于使用联接进行更新的帖子,但是它们总是首先更新表。我知道这在SQL Server中是可能的,希望在MySQL中也可能! 问题答案: MySQL中的多