gpt4 book ai didi

sql - 确定遍历一个表并更新另一个表的最佳方法

转载 作者:行者123 更新时间:2023-12-03 15:57:28 25 4
gpt4 key购买 nike

我正在使用 Delphi 7、BDE 和 Interbase(测试)、Oracle(生产)。

我有两个表(主表、响应表)

我需要单步浏览响应表,使用其 Master_Id 字段在主表 (id) 中查找匹配记录,并使用响应表中的日期字段更新主表中的日期字段

这可以在 SQL 中完成吗?还是我实际上必须创建两个 TTable 或 TQueries 并逐步遍历每条记录?

示例:

打开两个表(Table1、Table2)

with Table1 do
begin
first;
while not EOF do
begin
//get master_id field
//locate in id field in table 2
//edit record in table 2
next;
end;
end;

谢谢

最佳答案

对 Chris 的查询稍作修改,加入一个 where 子句以仅选择需要更新的记录。否则它将把其余日期设置为 NULL

UPDATE Master m
SET
m.date = (SELECT r.date FROM Reponses r WHERE r.master_id = m.id)
WHERE m.id IN (SELECT master_id FROM Responses)

更新为使用别名以避免混淆哪个列来自哪个表。这不是现成的、可复制粘贴的查询,因为 UPDATE 语法因数据库而异。您可能需要查阅数据库 SQL 引用以了解 UPDATE 语句语法中的 JOIN。

当对同一主条目有多个响应时

UPDATE Master m 
SET m.date = (
SELECT MAX(r.date) FROM Reponses r WHERE r.master_id = m.id)
WHERE m.id IN (SELECT master_id FROM Responses)

我使用了 MAX(),您可以使用适合您业务的任何内容。再次投入一些时间来理解 SQL。还不到几天的功夫。如果您喜欢 Oracle,请获取 PLSQL 完整引用

关于sql - 确定遍历一个表并更新另一个表的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4936621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com