如何通过SQL中的表使用循环“for”来检查列是否为0?
如何通过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
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代码不同,您并不经常真正需要循环。