mysql – 从UNION创建临时表时遇到问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 从UNION创建临时表时遇到问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1805字,纯文字阅读大概需要3分钟。
内容图文
我有一个UNION语句,它自己执行得很好:
SELECT "1999999999" AS MobileNo, "Test" AS FirstName, "Last" AS LastName, "268" AS TemplateID, "" AS MISC1, "" AS MISC2 UNION SELECT cust.cellp AS MobileNo, acct.firstname AS FirstName, acct.lastname AS LastName, "268" AS TemplateID, "" AS MISC1, "" AS MISC2 FROM acct INNER JOIN cust ON (cust.socsec=acct.socsec)
但是,当我尝试用CREATE TEMPORARY TABLE包装它时:
CREATE TEMPORARY TABLE temptable (SELECT "1999999999" AS MobileNo, "Test" AS FirstName, "Last" AS LastName, "268" AS TemplateID, "" AS MISC1, "" AS MISC2 UNION SELECT cust.cellp AS MobileNo, acct.firstname AS FirstName, acct.lastname AS LastName, "268" AS TemplateID, "" AS MISC1, "" AS MISC2 FROM acct INNER JOIN cust ON (cust.socsec=acct.socsec))
我收到此错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘UNION SELECT cust.cellp AS MobileNo, acct.firstname AS FirstName, ac’ at line 1
SELECT语句适用于它周围的CREATE TEMPORARY TABLE,它只是UNION不起作用.返回的MySQL错误很模糊,所以我无法弄清问题是什么.我尝试在括号中包装每个SELECT语句,但它也不喜欢.
我知道理论上我可以使用一个SELECT创建临时表,然后将第二个数据添加到表中,但是在这种情况下该解决方案实际上并不可行,因为它是我正在使用的报表生成器很漂亮严格只允许一个MySQL语句作为输入,所以除非我想重新设计整个系统(我没有,管理层也不希望我现在花时间在这上面)我必须找到一种方法来使这个工作在一个单个MySQL语句.
关于我在这里做错了什么的想法?
解决方法:
这是一个解决方法:
CREATE TABLE AS
SELECT *
FROM (
SELECT ...
UNION ALL
SELECT ...
) AS foo
您无法直接为create table执行联合,但您可以将其作为子选择:
mysql> create table foo as (select * from ((select 'foo') union all (select 'bar')) as foo);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
内容总结
以上是互联网集市为您收集整理的mysql – 从UNION创建临时表时遇到问题全部内容,希望文章能够帮你解决mysql – 从UNION创建临时表时遇到问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。