Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建包含一些列的表';s类型定义为某个函数';s返回类型_Mysql_Sql_Mariadb - Fatal编程技术网

Mysql 创建包含一些列的表';s类型定义为某个函数';s返回类型

Mysql 创建包含一些列的表';s类型定义为某个函数';s返回类型,mysql,sql,mariadb,Mysql,Sql,Mariadb,下面的SQL语句将创建一个表t,其中包含一列c1,其类型定义为bigint(21)unsigned,这是函数INET\u ATON的返回类型: CREATE TABLE t AS SELECT INET_ATON('0.0.0.0') AS c1; 但该语句也插入了一行。我想知道是否有一种方法可以在不插入行的情况下创建表并将其列的类型定义为某个函数的返回类型 我尝试了以下方法: CREATE TABLE t LIKE SELECT INET_ATON('0.0.0.0') AS c1; 但这

下面的SQL语句将创建一个表
t
,其中包含一列
c1
,其类型定义为
bigint(21)unsigned
,这是函数
INET\u ATON
的返回类型:

CREATE TABLE t AS SELECT INET_ATON('0.0.0.0') AS c1;
但该语句也插入了一行。我想知道是否有一种方法可以在不插入行的情况下创建表并将其列的类型定义为某个函数的返回类型

我尝试了以下方法:

CREATE TABLE t LIKE SELECT INET_ATON('0.0.0.0') AS c1;
但这与SQL语法不匹配

关于如何实现这一点有什么想法吗?谢谢


PS:任何标准SQL语句都可以,MariaDB或MySQL支持的语句也可以。

使用where子句创建一个永远不会为真的条件,如下所示:

CREATE TABLE t AS SELECT INET_ATON('0.0.0.0') AS c1 where 1=2;

这将创建表而不向其中添加任何行。

这一点很好!谢谢但我仍然想知道是否有专门的语法来实现这一点。如果没有提供专用语法的其他答案。我要选这个。实际上我以前没用过这个。在阅读你的问题时,这个想法突然出现了。它正在工作。谢谢你的提问。让我们试着从谷歌找到更好的东西。你能告诉我这是一件多么有用的事情吗。@P.Salmon这只是一个演示,本身没有用处。但在现实情况下,人们希望将某些函数的返回类型设置为列的类型,因为根据设计,列的值只能设置为函数的返回值。使用不显式声明类型的语句可以避免硬代码耦合。您确定这是返回(数据)类型,而不是mysql根据返回的内容猜测的类型吗?@P.Salmon抱歉,猜测是什么意思?执行嵌套的SELECT子句,返回类型为实际。