所以我有两个表。一个是基表(在此示例中称为_Keys),具有唯一的主键。然后,对于_Keys中的每个id,还有另一个表包含多个数据行(第二个表是Extra)。

我需要为Extra中的_Keys中的每个主键选择最大值。我做了一个SQLFiddle来建模问题here

这是我当前正在使用的查询,但是问题是它只会为Extra表选择一个值,而不是每行一个值。

Select * from _Keys
LEFT JOIN
(Select * from Extra ORDER BY value2 DESC LIMIT 1) as e
ON e.id = _Keys.id;


对于我的示例SQL Fiddle,我使用了以下数据库模式:

CREATE TABLE _Keys(id int, value int);
INSERT INTO _Keys (id, value) VALUES (1, 5),(2, 3),(3, 4);

CREATE TABLE Extra(id int, value2 int);
INSERT INTO Extra (id, value2) VALUES (1, 3),(1, 1),(2, 4),(2, 6),(3, 3),(3, 5);


基本上我的结果是here。 _Keys表中只有第一行从第二个表中获取其数据。

在MySQL中,如何在Extras中为_Keys中的每一行选择一行?

最佳答案

我相信我了解您正在尝试做什么,但不确定。


由于NULL您正在获取LIMIT值,它仅返回第一行。您还需要使用GROUP BY
要获得最大值,可以使用MAX


尝试这个。

SELECT * from _Keys
LEFT JOIN
(SELECT id, MAX(value2) AS value2 FROM Extra GROUP BY id) as e
ON e.id = _Keys.id;

关于mysql - 一排全部匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29813874/

10-12 05:28