SQL UPDATE字符串的一部分,其中包含来自其他表的值

时间:2017-09-18 08:41:12

标签: sql

我需要用另一个数据库表中的值替换字符串的一部分。实际上我需要用电子邮件替换用户ID。

DB1.TABLE1
ID|EMAIL
1 |johndoe; janedoe;
2 |otherguy; johndoe;

DB2.TABLE2
ID|USERID  |EMAIL
1 |johndoe |johndoe@test.com
2 |janedoe |janedoe@test.com
3 |otherguy|otherguy@test.com

我的查询

UPDATE
    TABLE1
set
    EMAIL = TABLE2.EMAIL
from
    DB2.TABLE2
where
    TABLE1.EMAIL = TABLE2.USERID

如何指定字符串"的一部分"东西?

2 个答案:

答案 0 :(得分:1)

有很多关于更改架构的评论......这将是最好的前进方式 看起来你在table1.email中存储的内容实际上是table2中的UserId列表。因此,您需要打破这些ID才能一起加入表格。

如果您绝对必须遵循此路径,那么网站上现有的Q + As将对您有所帮助:

(我已经认识到你正在使用SQL服务器...但如果你搜索我确信你可以找到其他RDBMS的类似答案)

Turning a Comma Separated string into individual rows

Multiple rows to one comma separated value

答案 1 :(得分:0)

我想你需要以下

UPDATE TABLE1
SET EMAIL = (
    SELECT TABLE2.EMAIL
    FROM TABLE2
    WHERE TABLE1.EMAIL LIKE TABLE2.USERID + '%');

demo