我试图从我的表中创建一个视图。当我从1个表中创建这样的视图时,效果很好:
CREATE VIEW v2 AS
SELECT section_id, section_name, count(*) AS num, count(*) as num1
FROM section_of_science
GROUP BY section_id;
select * from v2;
但当我尝试从两个表创建视图时,它不起作用:
CREATE VIEW v3 AS
SELECT section_of_science.section_id, section_of_science. section_name,
scientific_areas.areas_name, count(*) AS num, count(*) as num1
FROM section_of_science,
scientific_areas
GROUP BY section_id;
select * from v3;
我得到一个错误:
select列表的表达式#3不在group by子句中,它包含未聚合列“lab3.scientific#areas.areas#name”,该列在功能上不依赖于group by子句中的列;这与sql\u mode=only\u full\u group by不兼容
我做错什么了?
如果你需要更多的信息,请告诉我。
1条答案
按热度按时间nbysray51#
您的第一个查询可以工作,因为您正在按主键进行聚合。您显然在学习sql,因此应该在
GROUP BY
. 稍后您可以了解小效率。你的第二个应该写为:
笔记:
使用有意义的表别名(表名的缩写)。
不要在句子中使用逗号
FROM
条款。始终使用适当的、明确的、标准的、可读的
JOIN
语法。缺少您的查询
ON
项目的条件JOIN
.列出列表中所有未聚合的列
GROUP BY
.