sql大神帮忙解决一下,为什么目标表w无效,但在存储过程里可以正常跑过,页面运行却抛错
selecta.1,(100/(selectCOUNT(w.2)fromw))fromaleftjoin(selectb.1,b.2frombunionselectc.1...
select a.1,
(100/(select COUNT(w.2)from w ))
from a
left join (select b.1,b.2 from b
union select c.1,c.2 from c
) as w on w.1=a.1 展开
(100/(select COUNT(w.2)from w ))
from a
left join (select b.1,b.2 from b
union select c.1,c.2 from c
) as w on w.1=a.1 展开
1个回答
展开全部
你让我想起一句话,革命尚未成功,同志还需努力。
---------------------------------------------------------------
其实我不想回答你的问题的,主要是问题过于基础,抢答的一片人。主要是后面那个我挺喜欢。
select COUNT(w.2) from w 这个 明显是个错误,w 如果是存在的表 那一定要用别名才用能w.2的方式,如果是
(select b.1,b.2 from b
union select c.1,c.2 from c
) as w 这个的话,那就更错了,
sql 执行的第一步就是集合构建,
100/(select COUNT(w.2)from w ) 而这个是 子查询,在最后输出执行的,也就是说,
w 作为额外的表解析了,所以作为未知数据源提示给你错误!
存储过程在创建时不对表的存在性和 核心语法区进行校验,因为微软认为在执行的时候验证就足够了,所以存储过程只验证基本格式语法。
-----
记住sql 基本的执行顺序!
---------------------------------------------------------------
其实我不想回答你的问题的,主要是问题过于基础,抢答的一片人。主要是后面那个我挺喜欢。
select COUNT(w.2) from w 这个 明显是个错误,w 如果是存在的表 那一定要用别名才用能w.2的方式,如果是
(select b.1,b.2 from b
union select c.1,c.2 from c
) as w 这个的话,那就更错了,
sql 执行的第一步就是集合构建,
100/(select COUNT(w.2)from w ) 而这个是 子查询,在最后输出执行的,也就是说,
w 作为额外的表解析了,所以作为未知数据源提示给你错误!
存储过程在创建时不对表的存在性和 核心语法区进行校验,因为微软认为在执行的时候验证就足够了,所以存储过程只验证基本格式语法。
-----
记住sql 基本的执行顺序!
更多追问追答
追问
那个w表示不存在,只是a表和B表里面字段1和2组成的重命名表,w表只有字段1和2,而我想要的字段是100除以w字段2里面数据的条数,也就是A表和B表里面字段2的数据条数的和,那怎么样写才正确·····求解啊!大虾
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询