Mysql 有条件地将表插入另一个表-插入选择大小写
我试图执行一个相当简单的查询,根据SCcount将一个表(All_Shippings$Shp)插入另一个表(SC1_All_Shippings$Shp)。如果是1,则插入表;如果不是1,则不执行任何操作 我一直收到相同的错误消息: 列计数与第1行的值计数不匹配 我的代码: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
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。