1

首先,我使用的 MYSQL 版本是5.1.66-community-log.

既然我们已经解决了这个问题,我在尝试创建以下视图时检索到以下错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的“所有选择 RRA.id、RRA.reply_id 作为回复 ID、RRA.user_id、RRA.vote_up、RRA.rank”附近使用正确的语法

和观点:

$sql = "Create or replace view userRank as 
select PRA.id, PRA.post_id as postID, PRA.user_id, PRA.vote_up, PRA.rank_date 
from post_rank_activity PRA
union all 
select RRA.id, RRA.reply_id as replyID, RRA.user_id, RRA.vote_up, RRA.rank_date 
from reply_rank_activity RRA";

我检查了一些网站,这似乎是正确的语法 - 或者随着时间的推移发生了变化?

4

4 回答 4

2

括号可能会有所帮助,请尝试:

Create or replace view userRank as 
(select PRA.id, PRA.post_id as postID, PRA.user_id, PRA.vote_up, PRA.rank_date 
from post_rank_activity PRA)
union all 
(select RRA.id, RRA.reply_id as replyID, RRA.user_id, RRA.vote_up, RRA.rank_date 
from reply_rank_activity RRA)
于 2012-11-09T17:15:26.423 回答
0

据此,您的一切都不需要,请尝试:

Create or replace view userRank as select PRA.id, PRA.post_id as postID, PRA.user_id, PRA.vote_up, PRA.rank_date from post_rank_activity PRA union select RRA.id, RRA.reply_id as replyID, RRA.user_id, RRA.vote_up, RRA.rank_date from reply_rank_activity RRA;

它应该可以工作——未经测试。

于 2012-11-09T17:08:35.190 回答
0

Union 所有部分中的所有列的名称和类型必须相似

这两个是不同的

  • PRA.post_id 作为 postID

  • RRA.reply_id 作为replyID

于 2012-11-09T17:09:28.173 回答
0

这似乎是一个甚至在 MySQL 站点上提出的错误

http://bugs.mysql.com/bug.php?id=22044

于 2012-11-09T17:14:35.727 回答