遍历每一行并创建新的 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;
假设我有以下 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;