我在 MySQL 中有一个查询
select group_concat(users) into searchedUserIds from
((select user_id users from user_tbl) union
(select user_id users from user_details )) a;
它给出错误:不正确地使用 union 和 into
。我想要做的是将所有用户 ID 放入变量 searchedUserIds
中。 group_concat
会将所有 ID 放在一个列中,然后我可以将其保存到 searchedUserIds
变量中。这个查询是写在一个函数里面的,它给我这个错误。如果我单独运行这个联合查询,它会给我结果,但在函数内部我会收到错误。
变量声明:
declare
searchedUserIds varchar(5000);
最佳答案
在某些版本的 MySQL 中存在错误。如果解析器看到类似 SELECT ... INTO ... UNION SELECT ...
的内容,您遇到的错误消息应该会消失;也就是说,它应该防止 INTO
在 UNION
的任何分支中使用,而不是最后一个分支。但是,检查的编写方式(在您的 MySQL 版本中)无法说明 UNION
位于子查询内部而 INTO
位于子查询外部的可能性。
错误报告位于 http://bugs.mysql.com/bug.php?id=32858 ;如您所见,该错误已在 5.5 年前修复,因此最好的修复可能只是升级到较不古老的 MySQL 版本。 (如果您已经在使用相对较新版本的 MySQL,那么也许他们已经有了新的回归?)
如果您不想升级,或者如果您需要在升级之前解决这个问题,那么您可以重写您的存储过程以避免 INTO
,或者重写您的查询以避免 UNION
。在你的情况下,我想 user_details
中的每个 user_id
无论如何也会出现在 user_tbl
中,所以你可以可能只写:
SELECT GROUP_CONCAT(users)
INTO searchedUserIds
FROM user_tbl
;
!
关于mysql - Union 和 Into 的错误使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875323/