选择行数而不是其中的内容

时间:2010-02-21 16:12:21

标签: mysql select

有一次,我使用此查询来选择项目数,以便创建页面列表:

SELECT COUNT(id) FROM lists WHERE online = 1

但现在已经变得困难,因为有更多的条件。现在我需要知道在线列表的数量,这些列表中包含有列表项的字幕。

我尝试了以下操作,但它提供了多行而不是一个数字:

SELECT COUNT(lists.id)
FROM lists
INNER JOIN subtitles ON subtitles.list_id = lists.id
INNER JOIN listitems ON listitems.subtitle_id = subtitles.id
WHERE lists.online = 1
GROUP BY lists.id

当然我知道用PHP计算列表的数量是可能的,但是选择仅使用MySQL的列表数量要快得多。

那么,有没有办法在不获取实际内容的情况下选择行数?

1 个答案:

答案 0 :(得分:3)

这可能是您想要实现的目标:

SELECT COUNT(DISTINCT(lists.id))
FROM lists
INNER JOIN subtitles ON subtitles.list_id = lists.id
INNER JOIN listitems ON listitems.subtitle_id = subtitles.id
WHERE lists.online = 1

您可以简单地在连接中计算distinct的计数,而不是对列表进行分组。如果计算完全是你想要的,那就更容易了。