mysql - Union 和 Into 的错误使用

标签 mysql

我在 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 ... 的内容,您遇到的错误消息应该会消失;也就是说,它应该防止 INTOUNION 的任何分支中使用,而不是最后一个分支。但是,检查的编写方式(在您的 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/

相关文章:

MySQL获取具有相同id的表的总和

jquery - 使用jquery ajax将数组和非数组发送到php

mysql - 使用引用不同表的触发器

mysql - 如何获取mysql每5分钟查询数据的总和(列)和最后一个索引值

Python:使用请求读取图像(url),然后将其作为BLOB数据保存到MySQL

mysql - 在一个 mysql 查询中从多个表中选择数据

java - 从mysql获取大数据时出现连接异常

php - 有没有办法查询 MySQL 数据库两次并将第二次查询的结果添加到与第一次查询的结果相同的数组中?

php - 2 连接 MYSQL 并限制 1

php - 在数据库中存储 ckeditor 值(html 标记)的正确方法? (换行问题)