根据另一个表中字符串的存在更新二进制数据类型

时间:2012-04-11 12:34:17

标签: sql tsql

我在代码列表与主表之间存在多对多关系,其中包含与其相关的信息。有几个不同的代码具有不同的文本值,这些代码都是同一个东西的变体。我想检查它们是否存在ANY。我这样做的方法是使用LIKE%what i'm looking for%。我想根据我的其他一个表中存在某个字符串这一事实来更新主表中的二进制值 enter image description here

这是查询,因为我可以解决它而不会弄乱任何东西。

UPDATE tblVisits
SET variableOfInterest=1
FROM tblVisits INNER JOIN
icd_jxn ON tblVisits.kha_id = icd_jxn.kha_id INNER JOIN
tblICD on icd_jxn.icd_fk=tblICD.ICD_ID
WHERE (tblICD.Descrip LIKE N'%text of interest%')

由于有许多不同的代码共享在其描述中具有特定字符串文本的共同属性,我觉得这将是最好的方式来实现它而不是使用大量的OR语句。在我决定在tblVisits中添加'variableofInterest'之前,这是一个较旧的模式。

1 个答案:

答案 0 :(得分:1)

您可以使用EXISTS重写它:

UPDATE tblVisits
SET variableOfInterest = 1
FROM tblVisits 
WHERE EXISTS
      ( SELECT *
        FROM icd_jxn 
          INNER JOIN tblICD 
            ON icd_jxn.icd_fk = tblICD.ICD_ID
        WHERE tblICD.Descrip LIKE N'%text of interest%'
          AND tblVisits.kha_id = icd_jxn.kha_id
      )