以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]临时表在SQL中怎么用 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=145188) |
-- 作者:chnfo -- 发布时间:2020/1/11 12:22:00 -- [求助]临时表在SQL中怎么用 项目中有两个表,表A和表B,都使用外部数据源,表B中有一表达式列Temp(逻辑型) 如果我想生成一个临时表dt,并且将它在另外的SQL中引用(例如用exist),因为如果用 in的话,一是效率比较低,二是in的数据量超过1000,就得分批执行,可能效率更低 [此贴子已经被作者于2020/1/11 12:28:58编辑过]
|
-- 作者:chnfo -- 发布时间:2020/1/11 12:30:00 -- 上传整段代码时总是报错,不让上传,只能截图了 |
-- 作者:chnfo -- 发布时间:2020/1/11 13:15:00 -- 能不能这么用呢 |
-- 作者:有点蓝 -- 发布时间:2020/1/11 14:12:00 -- 临时表,和表达式里都无法在sql里使用,sql只能使用数据库存在的表和列 |
-- 作者:chnfo -- 发布时间:2020/1/11 17:25:00 -- 有没有变通的办法? 一是用SQL执行的效率更高一些 二是如果选中的行数比较多的话,再去用in效率反而更低
|
-- 作者:有点蓝 -- 发布时间:2020/1/11 17:33:00 -- 应该这样用 select * from (生成临时表的sql) as a where xxxx
|
-- 作者:chnfo -- 发布时间:2020/1/11 17:35:00 -- 问题是生成临时表要用到临时列啊。 selec t * f rom 表B wh ere Temp = 1 这里的Temp就是临时列,这似乎不行吧 这就成了个死循环了。
[此贴子已经被作者于2020/1/11 17:39:31编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/1/11 17:38:00 -- 这个没有办法,sql只能使用数据库存在的表和列,除非您自己开发一个数据库,没有任何数据库可以支持。 |
-- 作者:chnfo -- 发布时间:2020/1/11 17:41:00 -- 是否可以建一个内部表,然后把它与SQL结合使用? 把查询语句形成的数据filler到内部表中去 好象也不行
[此贴子已经被作者于2020/1/11 17:43:21编辑过]
|
-- 作者:chnfo -- 发布时间:2020/1/11 18:48:00 -- 蓝版,我还是不太死心,应当有办法解决这个问题的,要不然只有牺牲效率了。前提是使用外部数据表 原本的意图举例(只是举例,类比真实的应用场景):例如在界面上选择了一些出货单,针对这些出货单去设置折扣比例(没有选中的单子不折扣)。 当然,用遍历然后去更新也可以实现。 只是真实的应用场景的数据量比较大,考虑到用SQL执行效率会高一些。 |