保留使用 COUNT 和 GROUP By 选择行时通常会丢失的行。保持说另一列并将它们合并到使用 GROUP_CONCAT 函数分隔的列逗号中。

举这个例子。

SELECT
    COUNT(tickets.memberID) AS tickets,
    members.username
 FROM
    tickets,
    members
WHERE
    tickets.memberID=members.memberID
GROUP BY
    tickets.memberID
ORDER BY
    tickets DESC

这将输出每个用户拥有的票证数量,如果主题需要与用户一起显示,它不会那么简单,因为每一行都会有一个主题,但由于它使用 GROUP BY 只会返回一个主题。<

这是 GROUP_CONCAT 的用武之地,使用 GROUP_CONCAT 可以收集所有主题并用逗号分隔并放置在单个列中:

SELECT
    COUNT(tickets.memberID) AS tickets,
    members.username,
    GROUP_CONCAT(tickets.subject) AS subject
 FROM
    tickets,
    members
WHERE
    tickets.memberID=members.memberID
GROUP BY
    tickets.memberID
ORDER BY
    tickets DESC

使用 GROUP_CONCAT 后,上面的查询现在将返回行中的所有主题,如果没有使用 GROUP BY,则将返回这些行。
确实是一个非常有用的功能。

发表回复

您的电子邮箱地址不会被公开。