Php 计算SQL表中每个不同值的数量

Php 计算SQL表中每个不同值的数量,php,mysqli,Php,Mysqli,我想知道是否有一种简单的方法可以得到我有多少行不同的值(我知道这是错误的解释) 示例:我有一个表,它为我的博客文章注册视图。我想数一数,有多少人看了a篇文章,有多少人看了b篇文章(我有很多文章,我想获得前十名最受欢迎的文章) 有没有一种简单的方法可以用SQL来实现这一点,目前我用php数组来实现,我得到数组中所有不同的行,然后我得到每个数组值的行数,然后我对数组进行排序并返回前10个,但这太多了,我想知道,是否有办法用一个查询来实现这一点 select a.article_id, a.t

我想知道是否有一种简单的方法可以得到我有多少行不同的值(我知道这是错误的解释)

示例:我有一个表,它为我的博客文章注册视图。我想数一数,有多少人看了a篇文章,有多少人看了b篇文章(我有很多文章,我想获得前十名最受欢迎的文章)

有没有一种简单的方法可以用SQL来实现这一点,目前我用php数组来实现,我得到数组中所有不同的行,然后我得到每个数组值的行数,然后我对数组进行排序并返回前10个,但这太多了,我想知道,是否有办法用一个查询来实现这一点

select
  a.article_id,
  a.title,
  a.date,

  /* Make sure to count a relevant view from the *views* table. 
  -- This makes sure that count returns 0 instead of 1 when
  -- the article isn't viewed yet. */
  count(v.article_id) as viewcount

from
  Article a

  /* Using left join here, to also include articles that are not viewed at all.
  -- You can change this to an inner join if you don't want to include those. */
  left join ArticleView v on v.article_id = a.article_id

group by
  /* Group by article id, so count() actually counts per article. */
  a.article_id

order by
  /* Place the best viewed articles on top. */
  count(v.article_id) desc

  /* And return only 10 articles at most. */
limit 10
此查询将返回10篇文章,即使没有10篇文章有视图。如果只想返回实际具有视图的项目,而不需要项目表中的其他字段,可以稍微简化查询:

select
  v.article_id,
  count(v.article_id) as viewcount
from
  ArticleView v
group by
  v.article_id
order by
  count(v.article_id) desc
limit 10
但是第一个查询的优点是,您还可以将
'a'
的其他字段添加到查询结果中,如标题。因此,这个查询实际上可以返回生成整个top-10列表所需的所有信息,而第二个查询只提供ID列表

此查询将返回10篇文章,即使没有10篇文章有视图。如果只想返回实际具有视图的项目,而不需要项目表中的其他字段,可以稍微简化查询:

select
  v.article_id,
  count(v.article_id) as viewcount
from
  ArticleView v
group by
  v.article_id
order by
  count(v.article_id) desc
limit 10
但是第一个查询的优点是,您还可以将
'a'
的其他字段添加到查询结果中,如标题。因此,这个查询实际上可以返回生成整个top-10列表所需的所有信息,而第二个查询只提供ID列表

此查询将返回10篇文章,即使没有10篇文章有视图。如果只想返回实际具有视图的项目,而不需要项目表中的其他字段,可以稍微简化查询:

select
  v.article_id,
  count(v.article_id) as viewcount
from
  ArticleView v
group by
  v.article_id
order by
  count(v.article_id) desc
limit 10
但是第一个查询的优点是,您还可以将
'a'
的其他字段添加到查询结果中,如标题。因此,这个查询实际上可以返回生成整个top-10列表所需的所有信息,而第二个查询只提供ID列表

此查询将返回10篇文章,即使没有10篇文章有视图。如果只想返回实际具有视图的项目,而不需要项目表中的其他字段,可以稍微简化查询:

select
  v.article_id,
  count(v.article_id) as viewcount
from
  ArticleView v
group by
  v.article_id
order by
  count(v.article_id) desc
limit 10

但是第一个查询的优点是,您还可以将
'a'
的其他字段添加到查询结果中,如标题。因此,这个查询实际上可以返回生成整个top-10列表所需的所有信息,而第二个查询只提供ID列表。

使用sql分组很容易

select articleid, count(*) from view_table group by articled

显然,您需要更改表和字段。

使用sql分组很容易

select articleid, count(*) from view_table group by articled

显然,您需要更改表和字段。

使用sql分组很容易

select articleid, count(*) from view_table group by articled

显然,您需要更改表和字段。

使用sql分组很容易

select articleid, count(*) from view_table group by articled

显然,您需要更改表和字段。

表是什么样子的?表是什么样子的?表是什么样子的?表是什么样子的?表是什么样子的?