select music.*
,count(*) as count
FROM music
JOIN music_tagmap ON music.id = music_tagmap.music_id
JOIN tag ON music_tagmap.tag_id=tag.id
WHERE tag.content = ...
LIMIT 10 OFFSET 0;
为了计算结果,我首先提出添加第2行,但添加第2行只返回结果的一行和计数。如何在这样的条件下获得结果和计数?
答案 0 :(得分:1)
将您的查询更改为:
select SQL_CALC_FOUND_ROWS music.*
FROM music
JOIN music_tagmap ON music.id = music_tagmap.music_id
JOIN tag ON music_tagmap.tag_id=tag.id
WHERE tag.content = ...
LIMIT 10 OFFSET 0;
然后在完成后运行第二个查询:
select FOUND_ROWS();
这将为您提供在第一个查询中选择的行数,就像没有LIMIT语句一样。
答案 1 :(得分:0)
你可能最好只做第二次查询来获得计数。您可以尝试嵌入“SELECT COUNT()”子查询来代替“count(*)as count”,但我不认为你会通过嵌入子查询来减少很多开销...它可能会甚至会增加处理开销。