【发布时间】:2016-10-18 00:58:00
【问题描述】:
我的数据库中有 2 个表,其中一个包含一个 Description 和一个 Code 列
表_1
Description | Code
--------------------
123 street 23
321 street2 12
342 blabla 1
另一个表有一个Id列和一个描述列
表_2
Id | Description
------------------------------
41 street (textidontwant)
22 street2 (textidontwant)
33 blabla (textidontwant)
基本上,我想做的是用表 2 中的 Id 更新表 1 中的 Code,但是我需要使用子字符串来修剪表 2 中的描述,以便匹配文本与表 1 中的描述。
子查询我已经写好了,如下:
SELECT LEFT([Description], CHARINDEX('(', [Description]) - 1)) FROM Table_2
这里可以很好地修剪括号内的文本,但问题是我似乎无法使用 Table_2 中的 Id 更新 Table_1 代码列
我试过这样做:
UPDATE Table_1
SET Code = (SELECT T2.Id FROM Table_2 T2)
WHERE Table_1.[Description] = (SELECT LEFT([Description], CHARINDEX('(', [Description]) - 1)) FROM Table_2)
但我收到此错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
有什么想法吗?
感谢您的帮助!
【问题讨论】:
标签: sql-server sql-update substring