【问题标题】:SQL: execute changes in inner joins AFTER changes in a row values of tableSQL:在表的行值更改之后执行内部联接中的更改
【发布时间】:2013-12-26 22:49:27
【问题描述】:

我的问题有点概念性。

我有一个关于 SQL 的过程,我将几个表连接在一起。例如:“mkt_Original”包含代码(A1、A3 等),而“mkt_Desc”包含描述符(Aruba、Argentina 等)。它们通过内部连接连接并添加到临时表中:

SELECT CountryDesc, ColumnX into mkt_Temp 
FROM mkt_Original 
INNER JOIN mkt_Desc ON Mkt_Original.CountryCode = mkt_Desc.CountryCode

生成临时表后,我根据其他列 (ColumnX) 的值对国家代码进行了一些更改。例如:

UPDATE mkt_Temp
SET mkt_Temp.CountryCode = A3
WHERE mkt_Temp.ColumnX = 3

但是,一旦我完成了所有更新,我很好奇国家“描述”将如何更新(因为现在有另一个国家代码)。例如,如果最初存储 A4 的值,它将带回日本,当我更新到 A3 时,它应该说是中国。

我必须在临时表和所有其他表之间运行另一个 INNER JOIN 查询还是有更有效的方法?我正在阅读有关触发器的信息,但我不确定这种情况下的触发器会是什么样子。触发器的任何帮助或代码都会非常有用!

提前感谢您的宝贵时间。

【问题讨论】:

  • 您真的想使用inner join 进行另一个查询以获取最新数据——除非您正在处理一些非常大的数据量。其他任何事情听起来都是不必要的复杂化。

标签: sql sql-server triggers sql-update inner-join


【解决方案1】:

如果我是你,如果没有太多变化,我将在连接条件本身中编写一个 case 语句

SELECT CountryDesc, ColumnX into mkt_Temp 
FROM mkt_Original 
INNER JOIN mkt_Desc
ON (case when Mkt_Original.CountryCode = (case 
                                             when ColumnX = 3 then  'A3' else
                                          mkt_Desc.CountryCode end)

【讨论】:

  • 谢谢,但不幸的是,以前有很多变化,而且它们都不同,所以我认为编写大量案例陈述会比必要的努力多得多!
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多