【发布时间】:2015-07-23 08:41:48
【问题描述】:
这可能是微不足道的,但我的 SQL 素养有限。
假设,您在数据库中有两个表。以下是用于构造和填充数据的查询:
CREATE TABLE `participiants` (
`name` TEXT,
`age` INTEGER
);
CREATE TABLE `outcomes` (
`participiant` TEXT,
`score` INTEGER
);
INSERT INTO participiants
VALUES('Alice', 15),
('Bob', 37),
('Cindy', 56);
INSERT INTO outcomes
VALUES('Alice', 200),
('Alice', 250),
('Cindy', 180);
有数据的表格是这样的
参与者
name age
------------
Alice 15
Bob 37
Cindy 56
结果
participiant score
---------------------
Alice 200
Alice 250
Cindy 180
对于每个参与者.name,我想查询他们的 MAX(outcomes.score),包括结果表中不存在的 Bob 的空组,因此结果集应如下所示:
participiants.name MAX(outcomes.score)
-----------------------------------
Alice 250
Bob NONE
Cindy 180
我试过了
SELECT participiants.name, MAX(outcomes.score)
FROM participiants, outcomes
WHERE participiants.name = outcomes.participiant
GROUP BY participiants.name
但是,当然,这不包括 Bob NONE。我应该研究什么 SQL/Sqlite 语法来找到解决方案?
【问题讨论】: