作者zacaria (zacaria)
看板Database
标题[SQL ] 多项条件筛选
时间Tue Jul 20 13:32:13 2010
我用的软体是SAS 其中SQL语法与SQL SERVER 相似
想请问这样的问题要怎样去写程式执行时比较快
假设有两个表A、B
A中有栏位
a1、a2、a3、a4、a5、a6、
a7、a8、a9、a10、...、a20 共20栏
B中有栏位
a1、a2、a3、a4、a5、a6、
b1、b2、b3、b4、...、b18 共24栏
现在想作表C
条件为 A.a1=B.a1
A.a2=B.a2
A.a3=B.a3
A.a4=B.a4
A.a5=B.a5
A.a6=B.a6
即C表有栏位
a1、a2、a3、a4、a5、a6 (from 条件)
a7、a8、a9、a10、...、a20 (符合条件、from 表A)
共20栏
我的作法如下:
proc sql;
create table C as
select * from A where exists
(select * from B where
A.a1=B.a1
and A.a2=B.a2
and A.a3=B.a3
and A.a4=B.a4
and A.a5=B.a5
and A.a6=B.a6);
quit;
因为资料量很大
都要跑超过10小时,十分的耗时
想请问有没有更好的写法
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.14.83.28
※ 编辑: zacaria 来自: 163.14.83.28 (07/20 13:32)
1F:推 evernever:不熟SAS,但直觉是用 View, 还有你的语法好像没有到38栏 07/20 14:03
※ 编辑: zacaria 来自: 163.14.83.28 (07/20 15:11)
谢谢提醒 我的问题叙述错了 已改正
※ 编辑: zacaria 来自: 163.14.83.28 (07/20 15:12)
2F:→ tw70126:可以用inner join 吧 = = 07/21 20:59
3F:→ grence:如果 tableB的栏位没有用到,这种写法有可能比 join快 07/21 23:05