Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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/70.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中使用带变量的SELECT语句创建表_Mysql_Sql_Mysql 5.7 - Fatal编程技术网

在MySQL中使用带变量的SELECT语句创建表

在MySQL中使用带变量的SELECT语句创建表,mysql,sql,mysql-5.7,Mysql,Sql,Mysql 5.7,如何基于带有变量的SELECT语句创建表?我的意思是(简化的例子): SET@tmp=0; 将表测试创建为 挑选 (@tmp:=@tmp+1)测试, ... 从x 我使用MySQL 5.7。您的代码应该可以工作。您只需为列指定一个名称: SET @tmp = 0; CREATE TABLE test AS SELECT (@tmp := @tmp + 1) as test_id ... FROM x; 您可以将其合并为一条语句: CREATE TABLE

如何基于带有变量的SELECT语句创建表?我的意思是(简化的例子):

SET@tmp=0;
将表测试创建为
挑选
(@tmp:=@tmp+1)测试,
...
从x

我使用MySQL 5.7。

您的代码应该可以工作。您只需为列指定一个名称:

SET @tmp = 0; 

CREATE TABLE test AS
    SELECT (@tmp := @tmp + 1) as test_id
        ...
    FROM x;
您可以将其合并为一条语句:

CREATE TABLE test AS
    SELECT (@tmp := @tmp + 1) as test_id
        ...
    FROM x CROSS JOIN
         (SELECT @tmp := 0) params;

是一个dbfiddle

您的代码应该可以工作。您只需为列指定一个名称:

SET @tmp = 0; 

CREATE TABLE test AS
    SELECT (@tmp := @tmp + 1) as test_id
        ...
    FROM x;
您可以将其合并为一条语句:

CREATE TABLE test AS
    SELECT (@tmp := @tmp + 1) as test_id
        ...
    FROM x CROSS JOIN
         (SELECT @tmp := 0) params;

是一个dbfiddle

我只在示例中遗漏了别名。我得到错误代码:1264。第行的列“(null)”的值超出范围1@Kulis如果你想解决这个问题/错误,你不能像我在问题下面的评论中解释的那样在视图中使用MySQL用户变量,这感觉就像你在这里尝试做的一样。。然后使用
createtemporarytablettest作为(..)
可能更有意义..我可能太简化了。我的原始代码有4个变量和嵌套的SELECT语句。这里是更真实的版本@Kulis。我建议您提出一个新问题,包括适当的示例数据、期望的结果和SQL FIDLE。这个问题已经得到了回答。我只在示例中遗漏了alias。我得到错误代码:1264。第行的列“(null)”的值超出范围1@Kulis如果你想解决这个问题/错误,你不能像我在问题下面的评论中解释的那样在视图中使用MySQL用户变量,这感觉就像你在这里尝试做的一样。。然后使用
createtemporarytablettest作为(..)
可能更有意义..我可能太简化了。我的原始代码有4个变量和嵌套的SELECT语句。这里是更真实的版本@Kulis。我建议您提出一个新问题,包括适当的示例数据、期望的结果和SQL FIDLE。这个问题已经回答了。我觉得这是一个解决办法,因为它不是。。。否则,我不清楚为什么要这样做。通常是的,但我的代码也必须处理一些异常,所以我不能只使用这个示例。SQL代码正在运行,但我想创建一个表以进行简化。是的,您确实将其简化为您的,您首先在Gordan的回答下对其进行了注释,以模拟
ROW_NUMBER()/RANK()。。。否则,我不清楚为什么要这样做。通常是的,但我的代码也必须处理一些异常,所以我不能只使用这个示例。SQL代码正在运行,但我想创建一个表以进行简化。是的,您确实将其简化为您的,您首先在Gordan的回答下对其进行了注释,以模拟
ROW_NUMBER()/RANK()OVER(按…顺序…划分)