mariadb问题与创建表选择的选择是一个联合

uemypmqf  于 10个月前  发布在  其他
关注(0)|答案(1)|浏览(65)

我有一个六向联合选择,我正在使用它是PHP脚本的一部分。该命令在脚本中工作正常。在从SQL客户端执行时,该命令也能正常工作。然而,当我尝试将SELECT放入CREATE TABLE mytable SELECT中时,我得到如下错误消息:

Incorrect column name ''

字符串
在其中五个联合段中,有一个列名“”,它是稍后在脚本中填充的数据的占位符。但是在其中一个工会中,在同一个地方有varchar(32)列。
看起来正常执行的命令并不关心是否存在“anonymous”列。但在CREATE TABLE版本中,它不喜欢这样。
为什么联合列名的SELECT和CREATE TABLE SELECT有不同的规则?

ar5n3qh5

ar5n3qh51#

表不能包含名称为空或缺少名称的列。结果集可以。CREATE TABLE SELECTSELECT语句结果集中的列名中获取表的列名。因此,您需要确保结果集的每一列都有一个名称,该名称可以从某个表中的列派生,也可以从AS别名派生。比如说,

SELECT 'one' AS tablename, cola, colb, colc FROM table_one
 UNION ALL
SELECT 'two',              cola, colb, colc FROM table_two
 UNION ALL
SELECT 'three',            cola, colb, colc FROM table_three

字符串
适合在CREATE TABLE语句中使用,而

SELECT 'one',   cola, colb, colc FROM table_one
 UNION ALL
SELECT 'two',   cola, colb, colc FROM table_two
 UNION ALL
SELECT 'three', cola, colb, colc FROM table_three


不是,因为它不会为第一列分配别名列名。

相关问题