遍历每一行并创建新的 table

Iterate through every row and create new table

假设我有以下 table T1:

| col1 | col2 | col3 |
|------|------|------|
| 0    | 1    | 1    | // 1
| 1    | 0    | 1    | // 1
| 0    | 1    | 0    | // 0

我现在需要遍历每一行,创建一个新的 table T2 并用 1 填充它,只要其中有两个 1 T1.

所以新的 table T2 看起来像:

| res |
|-----|
| 1   |
| 1   |
| 0   |

我真的应该像 here 描述的那样遍历每一行,还是有更有效的方法?

您可以将“1”相加。假设每列是 0 或 1(如问题中所示):

select (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res
from t1;

如果您真的想要另一个 table,请在 select 之后添加 into t2

注意:SQL table 和结果集表示 无序 集(除非有一个 order by 用于创建结果放)。因此,如果您创建一个新的 table,这些行是无序的,并且不会与原始数据相对应。您可能只需要这样的查询:

select t1.*,
       (case when col1 + col2 + col3 = 2 then 1 else 0 end) as res
from t1;