我正在尝试在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。
任何想法都会非常感激。
答案 0 :(得分:0)
两件事:
SELECT @post_date;
- 它是否显示正确的信息? MySQL中的变量不能包含数组或多个项目。如果需要变量来保存多个对象,则需要使用CURSOR
。select @countofpost := count(@post_date);
查询,您还可以将其重新编写为SET @countofpost = FOUND_ROWS();
。 FOUND_ROWS()
返回没有LIMIT子句时返回的行数,因此不需要在行集中运行COUNT()
命令。我相信,您需要使用游标重新编写查询,因为(我认为)您希望第一个SELECT @post_date := from_unixtime(post_date) ...
查询返回多个对象。有关详细信息,请查看Reference Manual's Cursor section。