我在MySQL中有一个查询
select group_concat(users) into searchedUserIds from
((select user_id users from user_tbl) union
(select user_id users from user_details )) a;
它给出错误:incorrect usage of union and into
。我想要做的是将所有用户ID都放入变量searchedUserIds
。 group_concat
会将所有ID放在一个列中,然后我可以将其保存到searchedUserIds
变量中。此查询写在一个给我这个错误的函数内。如果我单独运行它,这个联合查询会给我结果,但在函数内部我得到错误。
变量声明:
declare
searchedUserIds varchar(5000);
答案 0 :(得分:0)
某些版本的MySQL存在错误。如果解析器看到类似SELECT ... INTO ... UNION SELECT ...
的内容,那么您遇到的错误消息假定将关闭。也就是说,它应该阻止在INTO
的任何分支中使用UNION
而不是最后一个分支。但是,检查的编写方式,它(在您的MySQL版本中)无法解释UNION
在子查询中并且INTO
在其外部的可能性。
错误报告位于http://bugs.mysql.com/bug.php?id=32858;正如你所看到的,这个错误是在5年半前修复的,所以最好的解决办法可能只是升级到一个不那么古老的MySQL版本。 (如果你已经使用了相对较新版本的MySQL,那么他们可能会有一个新的回归?)
如果您不希望升级,或者您需要比您愿意升级更快地解决此问题,那么您可以重写存储过程以避免INTO
,或重写您的查询以避免UNION
。在您的情况下,我认为user_id
中的user_details
中的每个user_tbl
也会出现在SELECT GROUP_CONCAT(users) INTO searchedUserIds FROM user_tbl;
中,因此您可能只能写:
{{1}}
<!/ P>