Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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_Select_Group By_Count - Fatal编程技术网

mysql选择查询结果错误,计数(*)和*

mysql选择查询结果错误,计数(*)和*,mysql,sql,select,group-by,count,Mysql,Sql,Select,Group By,Count,在Mysql中,我使用count()聚合函数进行分页,并使用*代替count()显示数据,但我得到的总计数和返回行数不同 问题1: SELECT COUNT(*) FROM change_request INNER JOIN task_main_management ON cr_project_id = project_id LEFT JOIN all_module AS am ON am.m_id = task_m_id WHERE cr_tenent_id = '100' A

在Mysql中,我使用count()聚合函数进行分页,并使用*代替count()显示数据,但我得到的总计数和返回行数不同

问题1:

SELECT
  COUNT(*)
FROM
  change_request
INNER JOIN task_main_management ON cr_project_id = project_id
LEFT JOIN all_module AS am
ON
  am.m_id = task_m_id
WHERE
  cr_tenent_id = '100' AND cr_entity_id = '100' AND cr_project_id = 'PROJ_310820200746367254' AND cr_type = '2' AND change_request.cr_id = '16' AND task_main_management.cr_id = 'CHRQ_020920200807413904'
GROUP BY
  change_request.cr_project_id
它有返回结果2


但是当我在select中使用*而不是COUNT(*)时,它给了我一行。

您的查询有一个
分组依据。因此,
COUNT(*)
是返回的一行中的值。如果使用聚合查询,则会更清楚:

SELECT change_request.cr_project_id, COUNT(*)
使用
分组依据
选择*
,查询格式不正确,应返回语法错误。不幸的是,MySQL的旧版本允许这种语法错误


我不确定您真正想要的是什么,但您可能只想删除
分组依据

如果要计算结果集将包含多少条记录,请删除
分组依据
子句并使用
计数(不同的…


请注意,对于当前的
groupby
子句,使用
select*
是不正确的。您应该枚举
SELECT
子句中的列,并可能对不是来自表
change\u request的任何内容使用聚合函数,这是预期的行为。。给定

ariaDB [sandbox]> select * from t;
+------+--------------------+------------+------------+----------+
| id   | venue              | city       | date       | time     |
+------+--------------------+------------+------------+----------+
|    1 | Waldorf Hotel      | London     | 2020-01-01 | 07:00:00 |
|    2 | Waldorf Hotel      | London     | 2020-01-02 | 07:00:00 |
|    3 | Heathrow           | London     | 2020-01-02 | 14:00:00 |
|    4 | Lennon Airport     | Liverpool  | 2020-01-02 | 16:00:00 |
|    5 | Port of Liverpool  | Liverpool  | 2020-01-02 | 19:30:00 |
|    6 | Port of Liverpool  | Liverpool  | 2020-01-03 | 07:00:00 |
|    7 | Port of Liverpool  | Liverpool  | 2020-01-04 | 07:00:00 |
|    8 | Port of Liverpool  | Liverpool  | 2020-01-05 | 07:00:00 |
|    9 | Port of Liverpool  | Liverpool  | 2020-01-06 | 07:00:00 |
|   10 | Manchester Airport | Manchester | 2020-01-06 | 12:40:00 |
|   11 | Heathrow           | London     | 2020-01-06 | 14:40:00 |
+------+--------------------+------------+------------+----------+
11 rows in set (0.001 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> SELECT * FROM T WHERE CITY = 'LONDON' GROUP BY CITY;
+------+---------------+--------+------------+----------+
| id   | venue         | city   | date       | time     |
+------+---------------+--------+------------+----------+
|    1 | Waldorf Hotel | London | 2020-01-01 | 07:00:00 |
+------+---------------+--------+------------+----------+
1 row in set (0.001 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> SELECT COUNT(*)
    -> FROM T
    -> WHERE CITY = 'LONDON'
    -> GROUP BY CITY;
+----------+
| COUNT(*) |
+----------+
|        4 |
+----------+
1 row in set (0.001 sec)
没有聚合函数的group by将返回1行非确定值
具有聚合函数但没有要聚合的列的group by将返回由where子句筛选的行的计数。

共享查询和结果,包括和不包括计数我怀疑类似于
select*from。。。按更改请求分组。更改项目ID
works@jainvikram444查询与问题中提到的相同。更改只有select字段
*
计数(*)
计数(*)
结果为2,但
*
返回单行。@Vickysw。你没有抓住要点。“2”位于由
分组依据
生成的单行中。如果要查看所有行,需要删除“分组依据”
。感谢您的回复。我理解你的想法,但总计数是我结构中的常见功能。。使用
*
获得正确结果还有其他方法吗?
ariaDB [sandbox]> select * from t;
+------+--------------------+------------+------------+----------+
| id   | venue              | city       | date       | time     |
+------+--------------------+------------+------------+----------+
|    1 | Waldorf Hotel      | London     | 2020-01-01 | 07:00:00 |
|    2 | Waldorf Hotel      | London     | 2020-01-02 | 07:00:00 |
|    3 | Heathrow           | London     | 2020-01-02 | 14:00:00 |
|    4 | Lennon Airport     | Liverpool  | 2020-01-02 | 16:00:00 |
|    5 | Port of Liverpool  | Liverpool  | 2020-01-02 | 19:30:00 |
|    6 | Port of Liverpool  | Liverpool  | 2020-01-03 | 07:00:00 |
|    7 | Port of Liverpool  | Liverpool  | 2020-01-04 | 07:00:00 |
|    8 | Port of Liverpool  | Liverpool  | 2020-01-05 | 07:00:00 |
|    9 | Port of Liverpool  | Liverpool  | 2020-01-06 | 07:00:00 |
|   10 | Manchester Airport | Manchester | 2020-01-06 | 12:40:00 |
|   11 | Heathrow           | London     | 2020-01-06 | 14:40:00 |
+------+--------------------+------------+------------+----------+
11 rows in set (0.001 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> SELECT * FROM T WHERE CITY = 'LONDON' GROUP BY CITY;
+------+---------------+--------+------------+----------+
| id   | venue         | city   | date       | time     |
+------+---------------+--------+------------+----------+
|    1 | Waldorf Hotel | London | 2020-01-01 | 07:00:00 |
+------+---------------+--------+------------+----------+
1 row in set (0.001 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> SELECT COUNT(*)
    -> FROM T
    -> WHERE CITY = 'LONDON'
    -> GROUP BY CITY;
+----------+
| COUNT(*) |
+----------+
|        4 |
+----------+
1 row in set (0.001 sec)