Mysql 在视图中选择count()

Mysql 在视图中选择count(),mysql,count,sql-view,Mysql,Count,Sql View,如果我尝试计算视图的行总数,比如 select count(*) from my_view v 它总是返回1,知道视图有很多行。我在mysql文档中找不到任何关于它的文档。如果不可能,是否有解决方案来完成此任务?多谢各位 编辑,视图没有主键,然后我也尝试了类似的操作,结果与1相同: select count(v.id_customer) from my_view v 以下是一个例子: mysql> select * from plans limit 5; +--------------

如果我尝试计算视图的行总数,比如

select count(*) from my_view v
它总是返回
1
,知道视图有很多行。我在mysql文档中找不到任何关于它的文档。如果不可能,是否有解决方案来完成此任务?多谢各位

编辑,视图没有主键,然后我也尝试了类似的操作,结果与
1
相同:

select count(v.id_customer) from my_view v
以下是一个例子:

mysql> select * from plans limit 5;
+----------------+----------+---------+---------+------------+---------------------+---------------------+----------------+--------------+
| medical_center | customer | invoice | product | recurrence | placed              | due_date            | elapsed_months | elapsed_days |
+----------------+----------+---------+---------+------------+---------------------+---------------------+----------------+--------------+
|              1 |        1 |       1 |       2 |          6 | 2015-01-18 17:16:23 | 2015-07-18 17:16:23 |              2 |           89 |
|              1 |        1 |       3 |       2 |          6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |              5 |            0 |
|              1 |        1 |       4 |       2 |          6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |              5 |            0 |
|              1 |        1 |       5 |       2 |          6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |              5 |            0 |
|              2 |        1 |       6 |       2 |          6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |              5 |            0 |
+----------------+----------+---------+---------+------------+---------------------+---------------------+----------------+--------------+
5 rows in set (0.00 sec)
现在,尝试计数:

mysql> select count(*) from plans p;
+----------+
| count(*) |
+----------+
|       1 |
+----------+
相反,试着这样做

select count(table_id) as countno from my_view
您将获得正确的值计数

请尝试以下操作:

SELECT * , (select count(*) FROM my_view) AS Cnt FROM my_view

count(*)
是一个聚合函数,需要GROUPBY子句才能工作。但是上面的方法现在可以帮助您。

如果您的视图计算计数,例如

create view my_view as
select count(*) as count from my_table
那么就:

select * from my_view

视图只返回一行(count rssult),因此如果您选择视图行的计数,它当然将是1。

您是使用任何应用程序级代码来执行上述查询,还是直接在mysql上尝试?直接从mysql控制台。始终返回
1
您介意将结果共享到问题中吗?只需将整个结果复制粘贴到您在mysql cli中得到的问题中即可。@AbhikChakraborty,我已更新了问题这很奇怪,我从未见过这个,我只是尝试从一个表创建一个视图,然后
count
它工作得很好。它与OP有什么不同?为什么您认为它会给出正确的结果?他只是想计算my_view表的总行数,对吗。。。?通过这一点,他可以实现这一点。因此,您的查询与他从my_view v中选择的计数(*)有何不同?应该是相同的,不是吗?实际上,我也尝试了这个变体(传递列的名称),但我得到了相同的结果