【发布时间】:2023-02-02 12:27:11
【问题描述】:
我正在尝试在 ksh 中执行如下所示的删除 SQL。
for ((i = 0; i < ${#array[@]}; i++))
do
delete from TABLE1 where NAME in (${array[i]})
done
在这个循环中,我可以一行一行地删除。但我想要的是同时删除多行,如 5 或 10。
我不知道,所以我需要你的帮助。
【问题讨论】:
-
数组的内容是什么?数字?字符串?删除多行是什么意思?例如array=(1,2,3,4,5) 并且您想删除名称在 1,2,3,4,5 中的所有行?请添加更多信息,以便我们为您提供帮助:)
-
@CarloCorradini
NAME列表明它是一个字符串。 -
将您的数组转换为类似
names="'name1', 'name2', 'name3'"的字符串。然后你可以做WHERE NAME IN ($names)。但是您还需要转义名称中的任何引号。 -
如果你不能让它工作,那么......这里的数据库访问在哪里?你可以做
for (....) ; do printf "delete from TABLE1 where NAME in (${array[i]})]\n" ; done | isql -U... -S...或类似的。可能只是where name = '${arrayii]}\n"。祝你好运。 -
谢谢你的 cmets!数组中的内容是字符串。并且,例如,它在数组中有 100 个元素。我想要的是同时删除 10 个元素并重复 10 次(而不是同时删除 100 个元素)。
标签: arrays linux shell db2 ksh