这可能是微不足道的,但我的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);
包含数据的表格如下
participiants
name age
------------
Alice 15
Bob 37
Cindy 56
结果
participiant score
---------------------
Alice 200
Alice 250
Cindy 180
对于每个参与者。我想查询他们的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语法,为此找到解决方案?
答案 0 :(得分:1)
使用左外连接:
SELECT participiants.name, MAX(outcomes.score)
FROM participiants LEFT OUTER JOIN outcomes on participiants.name = outcomes.participiant
GROUP BY participiants.name
答案 1 :(得分:1)
SELECT participiants.name, MAX(outcomes.score)
FROM participiants
LEFT JOIN outcomes
ON participiants.name = outcomes.participiant
GROUP BY participiants.name
LEFT JOIN
将选择表“PARTICIPANTS”