使用UNION的CREATE TABLE SELECT的Mariadb问题排除
P粉115840076
2023-08-02 11:25:48
<p>我正在处理一个包含六个UNION SELECT的PHP脚本,并且在脚本中这个命令运行得很好。在从SQL客户端执行时,这个命令也能正常工作。然而,当我尝试将SELECT语句放在CREATE TABLE mytable SELECT的内部时,我得到了以下错误消息:</p>
<pre class="brush:php;toolbar:false;">Incorrect column name ''</pre>
<p>在六个UNION SELECT的片段中,有五个片段中存在一个名为''的列名,该列名在脚本的后续部分填充数据时作为占位符使用。但在其中一个UNION中,同样的位置是一个varchar(32)列。<br /><br />似乎在正常执行的命令中并不在意存在一个"匿名"列。但在CREATE TABLE版本中,它不喜欢这样。<br /><br />为什么SELECT和CREATE TABLE SELECT对于union列名有不同的规则?</p><p><br /></p>
Tables不能包含空白或缺失的列名,而结果集可以。而CREATE TABLE SELECT语句会从SELECT语句的结果集中获取表的列名。因此,您需要确保结果集的每个列都有一个名称,可以是从某个表的列派生出来的,也可以是通过AS别名指定的。例如,
适用于CREATE TABLE语句,而
不适用,因为它没有给第一列分配一个别名列名。