sqlserver中的两个表如何实现同时更新?(详见问题说明)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver中的两个表如何实现同时更新?(详见问题说明)相关的知识,希望对你有一定的参考价值。
表1各列为id,rq 表2各列为id_2,rq_2,beizhu
其中id_2列值等于id,rq_2列值等于rq ,问如何在更新表1的同时更新表2 ?update语句应该如何写?
用触发器也可以 参考技术B UPDATE 表2 SET 表2.RQ_2=表1.R1
FROM 表2 INNER JOIN 表1 ON 表2.ID_2=表1.ID 参考技术C 建立关系或用触发器本回答被提问者采纳
如何从sql中的两个表之一中搜索
【中文标题】如何从sql中的两个表之一中搜索【英文标题】:How to search from one of two tables in sql 【发布时间】:2014-02-10 12:38:18 【问题描述】:我在 Sql server 中使用了两个表 Offered
和 Joined
..
我正在提供候选人加入公司。在提供时,我会提到加入日期。它将存储在Offered
表中,而不是Joined
表中。
候选人可以在不同的日期加入。加入日期将存储在Joined
表中。这不应该在Offered
表中更新。
现在我正在创建一个结合Offered and Joined Report
.. 的报告。其中我有一个名为Date of Joining
.. 的列。在该列中,如果候选人尚未加入,日期将来自Offered
表..如果候选人加入意味着,日期将从Joined
table..在表格之间进行选择,我使用了函数..
begin
declare @chk int
declare @JoiningDate datetime
set @chk=0
select @chk=id from MemberJoiningDetails where JobPostingId=@JobPostingId and MemberId=@MemberId
if(@chk != 0)
begin
select @JoiningDate=JoiningDate from MemberJoiningDetails where JobPostingId=@JobPostingId and MemberId=@MemberId
end
else
begin
select @JoiningDate=JoiningDate from MemberHiringDetails where JobPostingId=@JobPostingId and MemberId=@MemberId
end
return @JoiningDate
end
我保存了这个函数并在select语句中调用了这个函数..
现在我的问题是,我想根据加入日期条件创建报告。为此,WHERE
条件是从 C# 传递的。
但我的疑问是,如果候选人还没有加入,where 条件应该从Offered
表中检查。如果候选人加入我,where 条件应该从Joined
表中检查.. 怎么做这..?
【问题讨论】:
【参考方案1】:与其检查一个是否为空,不如将其放入COALESCE
函数中。在函数内部,您只需先选择 Hire date,如果它为 null,它将返回加入日期。这样您就不必担心他们是否被雇用。如果我正确阅读您的表格,查询将如下所示。
SELECT @JoiningDate = COALESCE(h.JoiningDate, j.JoiningDate)
FROM MemberJoiningDetails AS j
LEFT OUTER JOIN MemberHiringDetails AS h
ON j.JobPostingId = h.JobPostingId
AND j.MemberId = h.MemberId
WHERE j.JobPostingId = @JobPostingId
AND j.MemberId = @MemberId
【讨论】:
当我执行您的查询时,它会从COALESCE
中给出的第一个表中获取日期。它不是从第二个表中获取的..
COALESCE
只会得到第一个非空值。这就是为什么如果您将加入日期从Joined
表放在第一位,然后从Offered
表中列出加入日期,您将始终得到一个值。
如果我对加入的候选方法执行上述查询,它只从Hiring
表中获取日期。而不是从Joining
表中。所以,我改为COALESCE(j.JoiningDate, h.JoiningDate)
..在这种情况下,它从Joining
表中获取日期。但是如果我执行 for yet to join 候选方式,它返回空值,而不是来自Hiring
表。。
我认为这就是你想要的,如果 Hiring
表为空而不是从 Joining
表中获取日期。以上是关于sqlserver中的两个表如何实现同时更新?(详见问题说明)的主要内容,如果未能解决你的问题,请参考以下文章