Sqlite SQL查询包含空组

时间:2015-07-23 08:41:49

标签: sql sqlite group-by

这可能是微不足道的,但我的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语法,为此找到解决方案?

2 个答案:

答案 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”

中的所有元素