有一次,我使用此查询来选择项目数,以便创建页面列表:
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的列表数量要快得多。
那么,有没有办法在不获取实际内容的情况下选择行数?
答案 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的计数,而不是对列表进行分组。如果计算完全是你想要的,那就更容易了。