如何通过SQL中的表使用循环“for”来检查列是否为0?

如何通过SQL中的表使用循环“for”来检查列是否为0?,sql,mysql,sql-server,stored-procedures,Sql,Mysql,Sql Server,Stored Procedures,如何通过SQL中的表使用循环“for”来检查列是否为0 我需要在存储过程中这样做: for each record in tablex if table.column1=0 then insert into table1; Else insert into table2; End for; 您需要的是游标 mysql的示例: 更多详情: SQL Server的示例与此完全相同 SQL Server详细信息:您需要的是游标 mysql

如何通过SQL中的表使用循环“for”来检查列是否为0

我需要在存储过程中这样做:

for  each record in  tablex
     if table.column1=0 then
         insert into table1;
     Else
         insert into table2;
 End for;

您需要的是游标

mysql的示例:

更多详情:

SQL Server的示例与此完全相同


SQL Server详细信息:

您需要的是游标

mysql的示例:

更多详情:

SQL Server的示例与此完全相同


SQL Server详细信息:

不清楚您将在MySQL或SQL Server中编写何种语言,但通常的做法是使用DECLARE CURSOR、FETCH和WHILE

但是,如果任务像您在问题中所说的那样简单,那么更好、更快、更符合SQL标准的解决方案可能是:

INSERT INTO Table1 (ColList) 
     SELECT ColList 
       FROM SourceTable 
      WHERE Column1 = 0;

INSERT INTO Table2 (ColList) 
     SELECT ColList 
       FROM SourceTable 
      WHERE (Column1 <> 0 OR Column1 IS NULL);

目前还不清楚您将在MySQL或SQLServer中编写何种语言,但通常的做法是使用declareCursor、FETCH和WHILE

但是,如果任务像您在问题中所说的那样简单,那么更好、更快、更符合SQL标准的解决方案可能是:

INSERT INTO Table1 (ColList) 
     SELECT ColList 
       FROM SourceTable 
      WHERE Column1 = 0;

INSERT INTO Table2 (ColList) 
     SELECT ColList 
       FROM SourceTable 
      WHERE (Column1 <> 0 OR Column1 IS NULL);

您可以在没有光标的情况下执行相同的操作:

INSERT INTO table1 (colA, colB) 
     SELECT valX, valy, 'const' 
       FROM Table 
      WHERE column1 = 0;

然后对表2重复上述操作。

您可以在没有光标的情况下执行相同的操作:

INSERT INTO table1 (colA, colB) 
     SELECT valX, valy, 'const' 
       FROM Table 
      WHERE column1 = 0;

然后对表2重复上述操作。

是否需要使用循环?你能不能就这么做

insert into table1
select * from tablex 
where tablex.column1 = 0

insert into table2
select * from tablex 
where tablex.column1 != 0

是否有需要使用循环的原因?你能不能就这么做

insert into table1
select * from tablex 
where tablex.column1 = 0

insert into table2
select * from tablex 
where tablex.column1 != 0

我知道游标,我想知道其他方式,我对任何MYSQL/SQL服务器感兴趣我知道游标,我想知道其他方式,我对任何MYSQL/SQL服务器感兴趣与什么相比影响性能?如果你需要游标,你就使用它们,如果你不需要,你就不需要。它只是一个工具。你的问题听起来像是选择是否会影响性能?游标解决方案与Larry&Nathan的解决方案将游标插入选择器通常比许多人建议的基于集合的操作(如插入解决方案)慢得多。与什么相比,影响性能?如果你需要游标,你就使用它们,如果你不需要,你就不需要。它只是一个工具。您的问题听起来像是选择是否会影响性能?游标解决方案与Larry&Nathan的解决方案将游标插入选择器通常比许多人建议的基于集合的操作(如插入解决方案)慢得多。SQL是基于集合的。与过程/OO代码不同,实际上并不经常需要循环。SQL是基于集合的。与过程/OO代码不同,您并不经常真正需要循环。