关于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的,而且数据量很大。 展开
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的,而且数据量很大。 展开
展开全部
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
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的条件 ,只要前面的条件就可以了。
展开全部
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后,比较精确
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询