你为什么要在MySQL上'select *'后计算?

时间:2017-11-23 15:32:29

标签: mysql mysql-workbench

所以,今天我尝试了以下几点:

SELECT count(users), * FROM table;

它在,之后的count(users)上给了我一个语法错误,但是这个:

SELECT *, count(users) FROM TABLE;

或者这个:

SELECT count(users), users FROM table;

有效吗?这有什么理由吗?

修改:根据请求,这是错误:

  

错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'* from mygamedb'附近使用正确的语法

MySQL Workbench在count(*)之后用逗号分隔。我想指出我知道这是一个丑陋的选择,我应该分组等等,但问题不在于如何使它工作,而是一个简短的例子,询问为什么会发生这种情况,而不是如何让它发挥作用。

2 个答案:

答案 0 :(得分:0)

您可以使用别名来使其工作:

SELECT count(users), t.* 
FROM table t;

<强> DBFiddle Demo

SELECT count(users), *
FROM table;
-- You have an error in your SQL syntax;
-- check the manual that corresponds to your MySQL server version for the right
-- syntax to use near '* FROM tablez' at line 1

答案 1 :(得分:0)

我试图解释你什么时候使用这个SELECT count(users), * FROM table;查询然后mysql查询获取表就像
表:

---count(users)---
result of count

然后你正在添加*意味着获取所有属性值,但是现在mysql check *来自fetch table但是这不是他们因为table只有一个属性,name是count(users),这就是它显示错误的原因。但是当你使用t.table(t是表的别名)从表中获取它并且它工作正常。

我在这里评论我的理解是什么。

由于