关于sql server 嵌套查询、子查询的问题TAT

updatetable_Asetz='kc'where(x,y)in(selectx,yfromtable_A,table_Bwheretable_A.x=table_B... update table_A set z='kc'
where (x,y) in
(select x,y from table_A,table_B where table_A.x=table_B.x and table_A.y=table_B.y)
我知道这样写肯定有问题,可是不知道该怎么写↑
求救TAT

========问题补充======
如果 像这样写,查询出来的范围就会变宽了
update table_A set z='kc'
where
x=(select x from table_A,table_B where table_A.x=table_B.x and table_A.y=table_B.y)
and
y=(select y from table_A,table_B where table_A.x=table_B.x and table_A.y=table_B.y)

比如我只想查(x,y)=(0,0)、(1,1)这样写就查出了(x,y)=(0,0)(0,1)(1,0)(1,1)
比如我只想查(x,y)=('2012-2-6',0)、('2012-2-8',1)这样写就查出了(x,y)=('2012-2-6',0)('2012-2-6',1)('2012-2-8',0)('2012-2-8',1)
x是datetime类型的,y是int的,而且数据量很大。
展开
 我来答
晃来又晃去
2012-02-29 · TA获得超过919个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:364万
展开全部
x,y作为关联是吧:
update table_A set z='kc'
where exists(
select x,y from table_B where table_A.x=table_B.x and table_A.y=table_B.y)

建议你先用查询语句验证下查的结果是否正确:
select * from table_A
where exists(
select x,y from table_B where table_A.x=table_B.x and table_A.y=table_B.y)
-----要实现(0,0)、(1,1)这样,可在where中加上 x=y的条件:
and table_A.x=table_A.y
更多追问追答
追问
谢谢你的回答~不过我只是举个例子,事实上我要查的是
(x,y)=('2012-2-3',1),('2012-2-3',2)...('2012-2-10',7) ('2012-2-10',10) 是没有任何规律的
追答
那你不用加 x=y的条件 ,只要前面的条件就可以了。
yaogogo2010
2012-02-29 · TA获得超过2546个赞
知道小有建树答主
回答量:1187
采纳率:0%
帮助的人:1234万
展开全部
update table_A set z='kc'
where (x + y) in
(select x+y from table_A,table_B where table_A.x=table_B.x and table_A.y=table_B.y)

这样应该就可以了。。
不过你是数字的话,最好cast成varchar后,比较精确
追问
谢谢你的回答呢
x是datetime类型的,y是int的,而且因为数据量很大,用x+y会出现重复现象TAT
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式