2009年4月20日星期一

项目中遇到的一个动态查询

需求: sql 伪代码:select * from users where user_id in (select id from 如果参数flag=1 ,那么表名字为table1 ;如果参数flag=2,那么table的名字就为table2) 转换为2个sql即:如果flag=1,sql为:select * from users where user_id in (select id from table1); 如果flag=2,sql为:select * from users where user_id in (select id from table2);

实现: select * from users where user_id in
( select id from
( select t1.id, 1 flag from table1 union all select t2.id, 2 flag from table2
)where flag = decode (&flag,1,1,2,2)
);

0 评论:

发表评论