我编写了下面的小 bash 脚本,它按预期工作,但我添加了几个注释和换行符以提高可读性,这会破坏代码。删除注释和换行符应该使它成为一个有效的脚本。
### read all measurements from the database and list each value only once
sqlite3 -init /tmp/timeout /tmp/testje.sqlite \
'select distinct measurement from errors order by measurement;' |
### remove the first line of stdout as this is a notification rather than intended output
sed '1d' |
### loop though all found values
while read error; do
### count the number of occurences in the original table and print that
sqlite3 -init /tmp/timeout /tmp/testje.sqlite \
"select $error,count( measurement ) from errors where measurement = '$error' ;"
done
结果是这样的:
134 1
136 1
139 2
159 1
问题:是否可以sqlite3
将while
-loop 转换为 SQL 语句?换句话说,sqlite3 是否支持某种for
-loop 来遍历先前查询的结果?
现在我知道这sqlite3
是一个非常有限的数据库,很可能我想要的东西对它来说太复杂了。我一直在寻找它,但我真的是一个数据库傻瓜,到目前为止我得到的点击要么是在不同的数据库上,要么是在解决一个完全不同的问题。
最简单的答案(我不希望顺便说一句)是“sqlite3 不支持循环”。