Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 分组,但不包括所有项目的总和_Mysql_Sql - Fatal编程技术网

Mysql 分组,但不包括所有项目的总和

Mysql 分组,但不包括所有项目的总和,mysql,sql,Mysql,Sql,我们有一张“旅行”的桌子。旅行由用户组织。人们可以在线查看旅行。一次旅行可以是一组旅行的一部分。现在,我想按组获取所有旅行,但同时要汇总一次旅行的“视图” SELECT *, SUM(tripView) AS views FROM trip WHERE tripGroup != 0 AND tripOrganizerUserId = '1' GROUP BY tripGroup 有了这个,我得到了错误的“视图”数字。那么,在查询中,如果不在every while元素中使用“SELECT SU

我们有一张“旅行”的桌子。旅行由用户组织。人们可以在线查看旅行。一次旅行可以是一组旅行的一部分。现在,我想按组获取所有旅行,但同时要汇总一次旅行的“视图”

SELECT *, SUM(tripView) AS views 
FROM trip
WHERE tripGroup != 0
AND tripOrganizerUserId = '1'
GROUP BY tripGroup

有了这个,我得到了错误的“视图”数字。那么,在查询中,如果不在every while元素中使用“SELECT SUM()”,如何对该查询中的视图进行求和呢?

正如axiac在其评论中指出的那样,同一SQL语句中的“SELECT*”和“groupby”实际上是非法的。然而,MySql的解析器在使用GROUPBY并允许它的时候被破坏了;我不知道它到底算了什么,但它错了

您需要做的是选择需要分组的内容。因此,您的SQL应该是:

SELECT tripGroup, SUM(tripView) AS views 
FROM trip
WHERE tripGroup != 0
AND tripOrganizerUserId = '1'
GROUP BY tripGroup

MySql将正确解析这一点,并且应该会给出您期望的答案。

您不想要一个
计数
总和
选择*
分组方式
在同一查询中是无效的SQL。请参阅可能需要发布一些示例输入和输出,以捕获您尝试执行的操作,因为至少在我看来,从所写的内容来看,这似乎不是很清楚。一般的GROUP BY规则说:如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是一个集合函数的参数!MySQL的解析器不一定是坏的。记录了该行为:并解释了在5.7.5之前该行为是如何工作的:“对标准SQL使用的
groupby
的MySQL扩展允许选择列表、
具有
条件或
orderby
列表引用未聚合的列,即使这些列在功能上不依赖于
groupby
列。在这种情况下,服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的,这可能不是您想要的。”。我认为“断开”是所有这些的一个方便的缩写。草莓-谢谢:)和axiac-我不知道,谢谢您的信息!