如何计算连接查询中的结果

时间:2011-12-08 02:59:48

标签: mysql

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行只返回结果的一行和计数。如何在这样的条件下获得结果和计数?

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”,但我不认为你会通过嵌入子查询来减少很多开销...它可能会甚至会增加处理开销。