使用单元格引用一次更新多个行值
Update Multiple Row Values at Once using cell a reference
我有一个 table 我需要更新,但我不确定如何去做。这是架构
t1.id, t1.line, t1.item, t1.type
t2.id, t2.t1_id
t3.t2_id, t3.t1_line, t3.quantity1, t3.quantity2
t3 基本上是在维护 t1 中特定项目的数量。
在这个查询中,t3会有n条记录。这个想法是,对于 t3 中的每个条目 n,t1 中都会有一定数量的项目应该与之相关联。我需要计算这些项目并将 t3.t1_quantity1 设置为该计数。
使用上述模式,在一个查询中,我想知道第 1 行有多少项是类型 0,第 1 行有多少项是类型 1,结果输入到 t3.quantity1 和t3.quantity2 分别。第 2 行也是如此,如果 t3 中有更多行,则依此类推。
查询末尾的 t3 将显示以下内容
1, 1, 4, 2
1, 2, 4, 1
1, 3, 8, 3
我该怎么做?
您需要使用 UPDATE
和 JOIN
以及 CASE WHEN
和 COUNT
来制作它。
- 编写子查询以从
t1
table. 中获取 quantity1
、quantity2
的 line
列数
join
t2
, t3
tables by t1.line
UPDATE
数据到 t3
table.
看起来像这样。
UPDATE result
SET quantity1 = t.qty1,
quantity2 = t.qty2
FROM(
select line,
COUNT(case when type = 0 then 1 END) qty1,
COUNT(case when type = 1 then 1 END) qty2
from t1
GROUP BY line
) t
INNER JOIN t2 on t2.t1_id = t.line
inner join t3 result on t.line = result.t1_line
[结果]:
| t2_id | t1_line | quantity1 | quantity2 |
|-------|---------|-----------|-----------|
| 1 | 1 | 4 | 2 |
| 1 | 2 | 4 | 1 |
| 1 | 3 | 8 | 3 |
我有一个 table 我需要更新,但我不确定如何去做。这是架构
t1.id, t1.line, t1.item, t1.type
t2.id, t2.t1_id
t3.t2_id, t3.t1_line, t3.quantity1, t3.quantity2
t3 基本上是在维护 t1 中特定项目的数量。
在这个查询中,t3会有n条记录。这个想法是,对于 t3 中的每个条目 n,t1 中都会有一定数量的项目应该与之相关联。我需要计算这些项目并将 t3.t1_quantity1 设置为该计数。
使用上述模式,在一个查询中,我想知道第 1 行有多少项是类型 0,第 1 行有多少项是类型 1,结果输入到 t3.quantity1 和t3.quantity2 分别。第 2 行也是如此,如果 t3 中有更多行,则依此类推。
查询末尾的t3 将显示以下内容
1, 1, 4, 2
1, 2, 4, 1
1, 3, 8, 3
我该怎么做?
您需要使用 UPDATE
和 JOIN
以及 CASE WHEN
和 COUNT
来制作它。
- 编写子查询以从
t1
table. 中获取 join
t2
,t3
tables byt1.line
UPDATE
数据到t3
table.
quantity1
、quantity2
的 line
列数
看起来像这样。
UPDATE result
SET quantity1 = t.qty1,
quantity2 = t.qty2
FROM(
select line,
COUNT(case when type = 0 then 1 END) qty1,
COUNT(case when type = 1 then 1 END) qty2
from t1
GROUP BY line
) t
INNER JOIN t2 on t2.t1_id = t.line
inner join t3 result on t.line = result.t1_line
[结果]:
| t2_id | t1_line | quantity1 | quantity2 |
|-------|---------|-----------|-----------|
| 1 | 1 | 4 | 2 |
| 1 | 2 | 4 | 1 |
| 1 | 3 | 8 | 3 |