SQL查询并给表附值

来源:百度知道 编辑:UC知道 时间:2024/09/23 11:03:47
现A表中有以下字段,AID,BODY、B表中有ID,WRITER(作者),其中A表与B表的AID及ID是关联的,(数字是同步的),由于内容较多,需要通过搜索A表中BODY表内容中张三的的关键词的所有文章相应附值给B表中的WRITER一个固定值,如张三
由于怕无人回答丢分,故分放得很少,回复正确者再加50分,数据库为MYSQL
body是存放内容的,是需要搜索like '%张三%'的意思
writer是作者表,但里面是空的,需要通过搜索A表中body内容含有张三的文章,然后通过A表的相关ID传递给B表的writer附值为张三

declare @name nvarchar(10),@count int,@id int
set @name='张三'
set @count=
(select count(*) from A where body like 'like% @name%')
if @count>0
begin
set @id=(select AID from A where body like 'like% @name%')
insert into B(writer) values(@name) where id=@id
end

没懂你什么意思,body内容中张三的关键词是什么意思?是like '%张三%'的意思吗?还是='张三',给writer赋值为'张三'吗?

-----------------------------补充----------------------------
象你那么说的话,update一下都不太值得,因为你都知道要搜索的是张三,再用update来改就没什么意思了,如果张三和李四同时出现在body里,那怎么办?
而且你这样的话,就算写存储过程的话好像也不太可能,如果张三是输入参数,那直接把输入参数更改到writer表里就行了

我也有点没看明白,WRITE里没有数据吗?如果没有如何确定在BODY内容的作者与WRITE中的值相等?你是不是要查询两者间匹配的值吧
不知道是不是这个意思,先写一个
select * from A ,B where inStr(A.BODY,B.WRITER)<>null and A.AID=B.ID
在查询分析器里更新
insert into B (WRITER)
select inStr((A.BODY,B.WRITER)<>null ) from A where A.AID=B.ID