select * from
(
select 表A.*
from 表A
where 表A.FLAG = 1
)
TEST
where ID in
(
select BH from 表B
left outer join
表C on 表BL.SPR = 表C.USERID
where 表C.SSGS = '001' and 表C.BM = '001'
AND (表B.BZ IS NULL or 表B.PBZ=''))
这个sql 语句 没有 TEST这个表 为什么要加上这个才能实现我想要查询的结果!谢谢! 给我解释一下这个的用法。
(
select 表A.*
from 表A
where 表A.FLAG = 1
)
TEST
where ID in
(
select BH from 表B
left outer join
表C on 表BL.SPR = 表C.USERID
where 表C.SSGS = '001' and 表C.BM = '001'
AND (表B.BZ IS NULL or 表B.PBZ=''))
这个sql 语句 没有 TEST这个表 为什么要加上这个才能实现我想要查询的结果!谢谢! 给我解释一下这个的用法。
(
select 表A.*
from 表A
where 表A.FLAG = 1
)
TESTTEST 是一个临时表
select 表A.*
from 表A
where 表A.FLAG = 1
的结果集临时起个表名:TEST
最外层的 select * from () test 就是把()内的结果集做为表来查询的。详细请看MSDN 的子查询相关内容
(
select 表A.*
from 表A
where 表A.FLAG = 1
)TEST ---应该在这里吧 这个是别名 SQL语法需要
where ID in
(
select BH from 表B
left outer join
表C on 表BL.SPR = 表C.USERID
where 表C.SSGS = '001' and 表C.BM = '001'
AND (表B.BZ IS NULL or 表B.PBZ=''))
(
select 表A.*
from 表A
where 表A.FLAG = 1
)TEST where ID in
(
select BH from 表B
left outer join
表C on 表BL.SPR = 表C.USERID
where 表C.SSGS = '001' and 表C.BM = '001'
AND (表B.BZ IS NULL or 表B.PBZ=''))
这里的TEST就相当于下面语句中的a 这里a是table的别名
select * from table a where a.id = ?