Php SQL非重复加计数

Php SQL非重复加计数,php,sql,Php,Sql,我目前有一个表,其中有专辑名、艺术家和标题(用于MP3)。在左侧的网页上,我当前使用以下方式显示所有相册名称: SELEC DISTINCT `album` FROM `mp3` 但我想在旁边显示每张专辑的数量,例如: A Very Good Album (3) 表示该记录中有3个实体。我可以用SQL来做这件事吗?选择Distinct,但还要找出该相册中有多少人?您想要一个分组依据: select album, count(*) from mp3 group by album 这实际上是一

我目前有一个表,其中有专辑名、艺术家和标题(用于MP3)。在左侧的网页上,我当前使用以下方式显示所有相册名称:

SELEC DISTINCT `album` FROM `mp3`
但我想在旁边显示每张专辑的数量,例如:

A Very Good Album (3)

表示该记录中有3个实体。我可以用SQL来做这件事吗?选择Distinct,但还要找出该相册中有多少人?

您想要一个
分组依据:

select album, count(*)
from mp3
group by album

这实际上是一个基本的按
相册
分组的专辑,而不是
独特的

SELECT
  album,
  COUNT(*) AS num_records
FROM 
  mp3
GROUP BY album
如果要将其放在SQL查询中的括号中,请使用
CONCAT()
。不过,这最好留给您的应用程序来显示

SELECT
  /* The album title, and count in () as one column as a single string */
  /* like "A Very Good Album (3)" */
  CONCAT(album, ' (', COUNT(*), ')') AS album 
FROM
  mp3
GROUP BY album

查看并使用group by和concat字符串,如下所示

SELECT
    CONCAT(`album`, ' (', COUNT(*), ')') as album
FROM `mp3`
GROUP BY `album`
试试这个:

SELECT `album`, COUNT(*) FROM `mp3` GROUP BY `album`

您使用的是什么版本的sql?是sql server还是mysql等。?另外,你能展示更多关于表结构的信息吗?我对你所说的“条目”有点困惑。你是说数据库中有3条唱片的唱片名为“非常好的唱片”吗。那么计数的行为更像是一首歌的计数?不要这样做。在某个时候,您可能会发现您需要该计数用于其他用途,然后您的问题将是“我有一个非常复杂的查询来获取一个整体字符串-我如何才能得到计数?”。只需让SQL完成它的工作,并返回两个字段的结果:album name和count。在你的客户身上做这样的转变,不要那样做;将其留给表示逻辑(例如视图)来执行“concatting”。让SQL做它的工作就像让视图做它的工作一样。处理这种格式不是SQL的工作,所以呢?将表示逻辑留给数据库仍然不是一个好主意;这是简单的最佳实践。不要这样做(请参阅以获取解释)。@RobIII我不同意这一观点。如果mysql可以做到这一点,为什么不呢?可以不使用聚合函数,只使用原始数据和服务器端的所有计数…谢谢,这正是我需要的。
SELECT DISTINCT CONCAT(album, ' (', COUNT(DISTINCT album), ')') AS album
FROM            mp3
GROUP BY        album