所以我有两个表。一个是基表(在此示例中称为_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/