我试图想出如何在TSQL中实现它
do
update stuff set col = 'blah' where that_row = 'the right one'
select trash from stuff ...
until some_condition
Run Code Online (Sandbox Code Playgroud)
Transact-SQL提供的唯一迭代控制流句是while (condition) sentences首先评估条件,如果该条件为真,则执行该句子.
我正在思考一个场景,比如在表上执行UPDATE语句,直到某个条件被触发,直到执行了最后一个UPDATE.
最重要的是,我正在寻找解决这个问题的不那么肮脏的方法(在WHILE之前复制UPDATE对我来说没有多大意义,因为UPDATE语句可以任意长而复杂)
编辑:我正在尝试解决的问题涉及同一个表下的多个UPDATE语句,每个语句都采用并转换前一次迭代的值.这在一个大的UPDATE语句中是不可能的,因为每行只会被评估和更新一次,所以循环是我能弄清楚这个混乱工作的唯一方法.
我写了这个:
while file.readline().startswith("#"):
continue
Run Code Online (Sandbox Code Playgroud)
但我怀疑这continue是不必要的?我正在努力实现的正确语法是什么?
在Python中,您有两种不止一次重复某些操作的好方法.其中一个是while循环,另一个是for循环.那么让我们来看看两个简单的代码:
for i in range(n):
do_sth()
Run Code Online (Sandbox Code Playgroud)
和另外一个:
i = 0
while i < n:
do_sth()
i += 1
Run Code Online (Sandbox Code Playgroud)
我的问题是哪一个更好.当然,第一个在文档示例中非常常见,在Internet上可以找到各种代码,它更优雅,更短,但另一方面它创建了一个完全无用的整数列表,只是为了循环他们.这不是浪费内存,特别是涉及大量的迭代吗?
那么您怎么看?哪种方式更好?
假设我有以下代码,有三个for循环来做某事.如果我将最外部的for循环更改为while循环,它会快速运行吗?谢谢~~
int length = 200;
int test = 0;
int[] input = new int[10];
for(int i = 1; i <= length; i++) {
for (int j = 0; j <=length - i; j++) {
for (int k = 0; k < length - 1; k++) {
test = test + input[j + k];
}
}
}
Run Code Online (Sandbox Code Playgroud) 我试图使用Pyserial通过串口与设备通信.由于需要不断发送命令,因此必须将它们放在Python中的while循环中.
我目前正在使用这段代码,并看看python进程需要100%的CPU:
while True:
#do some serial sending here
time.sleep(0.2)
Run Code Online (Sandbox Code Playgroud)
这段代码有效.但是,发送速度很慢.我试图通过减少sleep间隔来加快速度,但似乎加载CPU太多了.
简而言之,是否有任何方法可以永久有效地迭代while循环,同时仍然保持较低的CPU资源消耗?
我试图了解"继续"的工作原理.我理解了关键字的概念,但是当我运行不同的程序时,它的工作方式不同: - /让我向您展示一些示例:
如果我运行这个程序:
int j = 0;
int i = 0;
LABEL1: for (; i < 3; i++) {
if (true)
continue;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的价值将是3.让我们添加一个外循环:
int j = 0;
int i = 0;
LABEL2: for (; j < 3; j++) {
LABEL1: for (; i < 3; i++) {
if (true)
continue LABEL2;
}
}
Run Code Online (Sandbox Code Playgroud)
我的价值将是... 0 !! 我不明白为什么如果继续使用带有转到外部循环的标签,我不会增加.有人能解释一下为什么吗?你有一些棘手的东西吗?还是做了一段时间?
我非常感谢您提供的任何帮助.
在实现无限循环时,使用while(1)vs for(;;)vs 会有区别goto吗?
谢谢,陈兹
在C中,人们可以做到
while( (i=a) != b ) { }
Run Code Online (Sandbox Code Playgroud)
但在Python中,它似乎不可能.
while (i = sys.stdin.read(1)) != "\n":
Run Code Online (Sandbox Code Playgroud)
生成
while (i = sys.stdin.read(1)) != "\n":
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
( ^应该在=)
有解决方法吗?
有许多不同的方法可以通过c#中的对象项来完成相同的简单循环.
这让我想知道是否有任何理由表现或使用方便,以至于在另一方面使用.或者仅仅是个人偏好.
拿一个简单的对象
var myList = List<MyObject>;
Run Code Online (Sandbox Code Playgroud)
让我们假设对象已填充,我们想迭代这些项目.
方法1.
foreach(var item in myList)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
方法2
myList.Foreach(ml =>
{
//Do stuff
});
Run Code Online (Sandbox Code Playgroud)
方法3
while (myList.MoveNext())
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
方法4
for (int i = 0; i < myList.Count; i++)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是,每个编译成同样的东西?使用一个比其他人有明显的性能优势吗?
或者这只是编码时的个人偏好?
我错过了吗?
我正在尝试在我的MySQL数据库中创建一堆记录.这是一次创建,所以我不是要创建存储过程.这是我的代码:
BEGIN
SET i = 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END
Run Code Online (Sandbox Code Playgroud)
这是错误:
[查询1中的错误]您的SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在'SET i = 2376921001 WHILE(i <= 237692200)附近使用正确的语法DO INSERT INTO coupon(第2行的couponCod'执行停止!
我尝试了一个具有相同结果的声明.代码如下:
BEGIN
DECLARE i INT unsigned DEFAULT 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END
Run Code Online (Sandbox Code Playgroud)
我尝试过的另一件事是@i而不是我.同样的错误.谁能看到我做错了什么?
while-loop ×10
for-loop ×5
loops ×4
python ×4
java ×2
break ×1
c ×1
c# ×1
continue ×1
flow-control ×1
foreach ×1
goto ×1
mysql ×1
performance ×1
pyserial ×1
sql ×1
sql-server ×1
t-sql ×1