2011-12-08 81 views
1
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

您是否希望获得查询匹配的总行数(除了限制)? –

+0

@RobWilliams是的。 – LotusH

回答

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(); 

这将使你在第一个查询选择,如果有行数没有限制声明。

0

你可能最好只是做第二个查询来计数。你可以尝试嵌入一个“SELECT COUNT()”子查询来代替“count(*)count”),但我不认为你会通过嵌入子查询来降低开销......它可能会甚至会增加处理开销。

相关问题