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;
答案 0 :(得分:1)
您要执行的操作需要汇总查询。
id
在a
中唯一是没有关系的,因为b
中的多行可能是匹配的。您的示例显示了这一点。如果返回一个值,为什么要用max()
而不是min()
?