sql 查询 求助

来源:百度知道 编辑:UC知道 时间:2024/05/25 07:59:38
select语句中的from必须接一个明确的表名
比如 select * from Table1

现在的需求是:
数据库里有表T1,T2,T3
某信息可能存在T2,或T3中,但是它在T1中有字段linkT来记录究竟是哪张表,假如它在T1中存入的key为a

想当然的写
select * from (select linkT from T1 where key = 'a')
where 其它限制条件
当然上句有语法错误
其中select linkT from T1 where key = 'a'返回了该信息存储的表名

如果用一条sql语句来完成所有的查询,该怎么写from之后部分呢???

!!!!
thanks
thanks
thanks
thanks
thanks
thanks
thanks

select * from (select linkT from T1 where key = 'a')
where 其它限制条件
这句其实没有语法错误。是个嵌套查询 。
但是却得不到你想要的结果。
select * from 这里可以是表名,视图,也可以是记录集。
而(select linkT from T1 where key = 'a') 这返回的是一个记录集
所以是可以查询。
而你想要的结果。貌似不太可能实现的了。而且说句实话,我不是很明白为什么要把数据库写成这个样子,建议你改的更合理些。

select * from T2 where T2.key=(select * from T1 where T1.key='a')

不知道是不是你说的意思

没调试,试试看能不能达到你说的目的

select *
from
(CASE
(select linkT from T1 where T1.key='a')
WHEN 'T2'
THEN (select * from T2)
ELSE
THEN (select * from T3)
END)
建议重新设计数据库结构,个人认为此类查询过于无理

select * from (select linkT from T1 where key = 'a') a
where 其它限制条件

注意,加了一个a,这样就没有语法错误了

select a.* ,b.* from T1 a,T2 b where a.linkT=b.linkT

判断一个如果T2表为空在查找T3表里试一下.