安微优优电子有限公司:sql语句问题,高手指教~

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 05:36:18
从两个表中检索数据,在条件中有一个判断,如果B表的m1字段为1,则在条件中有A表的字段n1=3,如果B表的m2字段为1,则条件中包含A表的n2=5。

select * from A,B where
<if B.m1=1
A.n1=3>
AND
<if B.m2=1
A.n2=5>

大概就是上面的意思。据说是动态SQL.
该怎么写?????
楼下两位没有理解我的意思。
SQL语句写出来之后,where应该是有四种可能:
1.A.n1=3
2.A.n2=5
3.A.n1=3 and A.n2=5
4.为空

也就是where是根据B表的值动态生成的。

select * from A,B where A.n1=(case when B.m1=1 then 3 else A.n1 end) and A.n2=(case when B.m2=1 then 5 else A.n2 end)

当 B.m1=1 时 A.n1=3 否则 A.n1=A.n1(等于自已相当于没有这个条件)
当 B.m2=1 时 A.n2=5 否则 A.n2=A.n2(等于自已相当于没有这个条件)

select * from A,B where
(B.m1=1
AND A.n1=3)
OR
(B.m2=1
AND A.n2=5)

select * from A,B where
(B.m1=1
AND A.n1=3)
OR
(B.m2=1
AND A.n2=5)