Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 有条件地将表插入另一个表-插入选择大小写_Mysql_Insert_Case - Fatal编程技术网

Mysql 有条件地将表插入另一个表-插入选择大小写

Mysql 有条件地将表插入另一个表-插入选择大小写,mysql,insert,case,Mysql,Insert,Case,我试图执行一个相当简单的查询,根据SCcount将一个表(All_Shippings$Shp)插入另一个表(SC1_All_Shippings$Shp)。如果是1,则插入表;如果不是1,则不执行任何操作 我一直收到相同的错误消息: 列计数与第1行的值计数不匹配 我的代码: CREATE TABLE IF NOT EXISTS SC1_All_Shipments$Shp LIKE All_Shipments$Shp INSERT INTO SC1_All_Shipments$Sh

我试图执行一个相当简单的查询,根据SCcount将一个表(All_Shippings$Shp)插入另一个表(SC1_All_Shippings$Shp)。如果是1,则插入表;如果不是1,则不执行任何操作

我一直收到相同的错误消息:

列计数与第1行的值计数不匹配

我的代码:

    CREATE TABLE IF NOT EXISTS SC1_All_Shipments$Shp LIKE All_Shipments$Shp

    INSERT INTO SC1_All_Shipments$Shp
    SELECT
        CASE
            WHEN SCcount = 1 THEN '*'
            ELSE 0
        END
    FROM All_Shipments$Shp;

我不确定错误消息是否来自“*”语句。但是,我在其他语句中尝试过这一点,但仍然收到相同的错误。

我们可以使用where子句而不是case when轻松编写此insert语句

 INSERT INTO SC1_All_Shipments$Shp
    SELECT FROM All_Shipments$Shp where SCcount = 1;

错误
列计数与第1行的值计数不匹配
表示您试图在具有多个列的表中插入单个列值

INSERT INTO SC1_All_Shipments$Shp // this means that you want to put values for all SC1_All_Shipments$Shp columns
SELECT
    CASE
        WHEN SCcount = 1 THEN '*'
        ELSE 0
    END // ... but here you are passing only one value
FROM All_Shipments$Shp;
关于
SCcount
字段的条件必须放在
选择中的
WHERE
条件中:

INSERT INTO SC1_All_Shipments$Shp
SELECT * FROM All_Shipments$Shp
    WHERE SCcount = 1;

这样做,您只需从
SC1\u所有装运$Shp
中选择具有
SCcount=1
的数据,然后这些数据将插入到
SC1\u所有装运$Shp

中,您在“插入到”中使用的选择与所有其他选择一样有效

它看起来像泰克斯

CREATE TABLE IF NOT EXISTS SC1_All_Shipments$Shp
SELECT 
 *
FROM 
  All_Shipments$Shp
WHERE SCcount = 1;

您可以根据需要更改where子句

使用
where
子句从插入中排除记录:

    CREATE TABLE IF NOT EXISTS SC1_All_Shipments$Shp LIKE All_Shipments$Shp

    INSERT INTO SC1_All_Shipments$Shp
    SELECT *
    FROM All_Shipments$Shp
    WHERE SCcount = 1;

因为Select语句返回一列。你应该用where。