使用循环计算mysql查询的结果数

时间:2012-11-07 23:17:40

标签: mysql

我正在尝试在mysql中编写一个循环,以便一个查询的结果通知第二个。这是我当前的查询集:

 select @post_date := from_unixtime(post_date)
 from posts
 where post_date > unix_timestamp('2012-10-20') and nsfw=1;

 select @countofpost := count(@post_date);

 while @countofpost > 0 DO

  select count(*)
  from live_sharedata.users
  where joined between @post_date and (@post_date + 21600) and joined_site_id="RS";

  set @countofpost = @countofpost -1;

 end while;

我收到的错误是[Err] 1064 - 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'while @countofpost>附近使用正确的语法。 0 DO。

任何想法都会非常感激。

1 个答案:

答案 0 :(得分:0)

两件事:

  1. 运行SELECT @post_date; - 它是否显示正确的信息? MySQL中的变量不能包含数组或多个项目。如果需要变量来保存多个对象,则需要使用CURSOR
  2. 对于select @countofpost := count(@post_date);查询,您还可以将其重新编写为SET @countofpost = FOUND_ROWS();FOUND_ROWS()返回没有LIMIT子句时返回的行数,因此不需要在行集中运行COUNT()命令。
  3. 我相信,您需要使用游标重新编写查询,因为(我认为)您希望第一个SELECT @post_date := from_unixtime(post_date) ...查询返回多个对象。有关详细信息,请查看Reference Manual's Cursor section