表格1:
id name desc
-----------------------
1 a abc
2 b def
3 c adf
Run Code Online (Sandbox Code Playgroud)
表2:
id name desc
-----------------------
1 x 123
2 y 345
Run Code Online (Sandbox Code Playgroud)
如何运行可以使用相同的ID更新表1和表2的名称和desc 的SQL更新查询?所以我得到的最终结果是
表格1:
id name desc
-----------------------
1 x 123
2 y 345
3 c adf
Run Code Online (Sandbox Code Playgroud)
如何做到这一点:
我有一个脚本,使用一堆with子句来得出一些结果,然后我想把这个结果写在一个表中.我无法理解它,有人能指出我正确的方向吗?
这是一个简化的例子,表明我想做什么:
with comp as (
select *, 42 as ComputedValue from mytable where id = 1
)
update t
set SomeColumn = c.ComputedValue
from mytable t
inner join comp c on t.id = c.id
Run Code Online (Sandbox Code Playgroud)
真实的东西有很多with子句都互相引用,所以实际使用with子句的任何建议都比将其重构为嵌套子查询更受欢迎.
提前致谢,
格特 - 扬
基于每个表中的一个列相等(user_id),将多个行从另一个表更新为一个表.
两个表都有一user_id列.需要从数据插入t2到t1当user_id列相等.
提前感谢您提供的任何帮助.
我有两张桌子.
表1包含公司,其位置在名为的列中使用lat/lng坐标进行地理配准the_geom
表2还包含来自Table1的相同公司,而不是地理参考,以及其他数百个地址为地理参考的公司.
我需要做的就是将Table1公司的the_geomlat/lng值插入表2中的相应条目.这些插入可以基于的共同点是列.address
简单的问题,我确定,但我很少使用SQL.
假设我有两个表,例如:
Product
prd_id prd_name parent_prd_id ...
123 Foo <null>
456 Bar <null>
789 Baz <null>
Product_Parent_Relation_Batch
prd_id prd_parent_id processed
555 888 T
123 789 F
456 789 F
Run Code Online (Sandbox Code Playgroud)
我无法将关系数据直接加载到产品中。父母有可能在孩子之前不存在。不管设计是否糟糕,事情就是这样。要更新产品表,我会进行相关更新,例如:
我想用父 ID 789 填充产品 123 和 456,并将 123 和 456 设置为产品父关系批处理表中的processed = 'T'。看来我只能做一件事了。
我是否被迫在应用程序中执行此操作,在该应用程序中查询与现有产品记录具有匹配的 prd_id 的所有未处理的批记录,为产品表执行一个单独的更新语句,为关系批处理表执行另一个更新语句,对于所有适用记录?
CREATE OR REPLACE PROCEDURE sync_prd_with_parent
IS
cursor c1 is
select prd_id, parent_prd_id
from product_parent_relation_batch
inner join product on product_parent_relation_batch.prd_id = product.prd_id
where product_parent_relation_batch.processed = 'F';
BEGIN
FOR rec in c1
LOOP
UPDATE product …Run Code Online (Sandbox Code Playgroud) 我可以使用oracle数据库中的公用表表达式进行更新吗?
ORA-00928: missing SELECT keyword尝试此操作时出现错误:
with average as (SELECT avg(salary) FROM instructor)
update instructor
set salary = case
when salary <= average then salary * 1.05
else salary * 1.03
end
Run Code Online (Sandbox Code Playgroud) 所以,我有两个表,INTERNAMENTO 和 DOC_ADMISSAO2。我想在某些条件下使用与名为 DIASADMISSAO 的表 DOC_ADMISSAO2 相同的值来更新名为 DIASINTERNAMENTO 的表 INTERNAMENTO 中的列。
update INTERNAMENTO a
set a.DIASINTERNAMENTO = (
select b.DIASADMISSAO
from DOC_ADMISSAO2 b
where (a.EPISODIO = b.EPISODIO) AND (a.DATACRIACAO <= b.DATACRIACAO));
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误:
- 00000 - “单行子查询返回多于一行”
有什么建议吗?