假设我有下表T1
:
| col1 | col2 | col3 |
|------|------|------|
| 0 | 1 | 1 | // 1
| 1 | 0 | 1 | // 1
| 0 | 1 | 0 | // 0
我现在需要迭代每一行,创建一个新表T2
并使用1
填充它,只要1
中有一行T1
。
所以新表T2
看起来像是:
| res |
|-----|
| 1 |
| 1 |
| 0 |
我应该如here所描述的那样遍历每一行,还是有更有效的方式?
答案 0 :(得分:1)
你可以加“1”。假设每列都是0或1(如问题所示):
select (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res
from t1;
如果您真的想要另一张桌子,请在into t2
之后添加select
。
注意:SQL表和结果集代表无序集(除非有order by
用于创建结果集)。因此,如果创建新表,则行是无序的,并且不对应于原始数据。您可能只想要这样的查询:
select t1.*,
(case when col1 + col2 + col3 = 2 then 1 else 0 end) as res
from t1;