【问题标题】:Can we update values in a table by using if condition?我们可以使用 if 条件更新表中的值吗?
【发布时间】:2017-02-08 11:28:24
【问题描述】:

我有 4 张桌子。

标识符不同。因此,在表 4 中,我们有连接两个表的数据。但是 Table1 与其他 3 个表中的任何一个都没有关系。

我必须验证表 2 和表 3 的计数是否匹配。在得到比较结果后,我需要用 Pass/Fail 更新表 1

例如:表 2 的计数等于表 3。

【问题讨论】:

  • 您最好发布您尝试过的内容和预期的结果。
  • 样本数据和期望的结果确实有助于解释您想要做什么。
  • 点击查看表格图片。这里有4张桌子。我想验证表 2 和表 3 的计数是否匹配。例如:表2的计数等于表3。但是,标识符不同。因此,在表 4 中,我们有连接两个表的数据。有了比较的结果。我想用 Pass/Fail 更新表 1

标签: sql sql-server if-statement join sql-update


【解决方案1】:

使用JoinsIF EXISTS

UPDATE T1 SET checklist = 'SOMETHING'
FROM TABLE1 T1
INNER JOIN TABLE2 T2 ON T1.FIELDVALUE = T2.FIELDVALUE 
INNER JOIN TABLE3 T3 ON T1.FIELDVALUE = T3.FIELDVALUE 

UPDATE TABLE1 SET checklist = 'SOMETHING'
WHERE EXISTS(SELECT 1 FROM TABLE2 WHERE TABLE1.FIELDVALUE  = TABLE2.FIELDVALUE)
AND EXISTS(SELECT 1 FROM TABLE3 WHERE TABLE1.FIELDVALUE  = TABLE3.FIELDVALUE)

更新:来自 cmets

IF EXISTS(
SELECT 1
FROM TABLE4 T4
INNER JOIN TABLE2 T2 ON T4.Identifier = T2.Identifier 
INNER JOIN TABLE3 T3 ON T4.Identifier_ = T3.Identifier2
AND T2.COUNT <> T3.COUNT
)
BEGIN
UPDATE TABLE1 SET RESULTS = 'Fail'
END
ELSE
BEGIN 
UPDATE TABLE1 SET RESULTS = 'Pass'
END

【讨论】:

  • 感谢您帮助我。但是,第 2 表和第 3 表具有可比较的共同值,表 1 与这 2 个表完全不相关。但是,比较结果应该在表1中更新。
  • 在您提供表格结构、示例数据和预期输出之前,这仍不清楚。请编辑您的问题@KrishnaTeja
  • Click for Image of tables。这里有4张桌子。我想验证表 2 和表 3 的计数是否匹配。例如:表2的计数等于表3。但是,标识符不同。因此,在表 4 中,我们有连接两个表的数据。有了比较的结果。我想用 Pass/Fail 和相应的 cmets 更新表 1。
【解决方案2】:
update one
set one.assid = two.assid
from tableone_name one
inner join table_2 two on
    one.id = two .udid
inner join table_2 th on
    one.id_1 = th .id_3

希望能成功

【讨论】:

    猜你喜欢
    • 2021-06-13
    • 2021-05-13
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2021-04-21
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多