日期:2014-05-18  浏览次数:20766 次

sql update 问题
写了这样一句查询语句

UPDATE   A   set   [content]   =   REPLACE([content],(select   *   from   A   Where   [content]   in   (Select   A.[content]   From   A,   B   Where   A.[content]   Like   '% '   +   B.compareletter   +   '% ')), '* ')

目的是如果A表中的[content]字段中包含B表中compareletter字段的内容就用*号替代A表中[content]字段中的内容。

运行时查询分析器报错:

消息   116,级别   16,状态   1,第   31   行
当没有用   EXISTS   引入子查询时,在选择列表中只能指定一个表达式。

怎么改   谢谢

------解决方案--------------------
select * from
这个*指定成字段名成看看。
------解决方案--------------------

update a
set content = '* '
where exists (
select 1
from b
where b.compareletter like '% ' + a.content + "% ')

希望你以后发贴的时候注意格式,要不,看上去真的很晕的
------解决方案--------------------

UPDATE A SET [content] = REPLACE([content], '* ') FROM A,B WHERE A.[content] LIKE '% ' + B.compareletter + '% '
------解决方案--------------------
update a
set content = '* '
where content in(
select a.content
from a,b
where b.compareletter like '% ' + a.content + "% ')
------解决方案--------------------
update a
set content = '* '
where content in(
select a.content
from a,b
where a.content like '% ' + b.compareletter + "% ')