使按列列表更短?

时间:2019-07-18 14:38:01

标签: sql sql-server group-by

CREATE TABLE a(id integer primary key, myValue int);
CREATE TABLE b(id integer);
INSERT INTO a VALUES(1,10),(2,20);
INSERT INTO b VALUES(1),(1);

SELECT b.id, a.myValue 
FROM b
JOIN a ON b.id = a.id
GROUP BY b.id; 

让我得到消息8120,级别16(选择列表中的a.myValue列无效,因为它不包含在聚合函数或GROUP BY子句中)。但是由于a.id是主键,因此引擎可以推断出a.myValue是唯一定义的,因为a.id是。只是为了确保无所事事

SELECT b.id, a.myValue 
FROM b
JOIN a ON b.id = a.id
GROUP BY b.id, a.myValue;

OR

SELECT b.id, MAX(a.myValue) 
FROM b
JOIN a ON b.id = a.id
GROUP BY b.id;

1 个答案:

答案 0 :(得分:1)

您要执行的操作需要汇总查询。

ida中唯一是没有关系的,因为b中的多行可能是匹配的。您的示例显示了这一点。如果返回一个值,为什么要用max()而不是min()