有一张表数据table1id tableName refId
-----------------------
1 table2 k1
2 table3 h1table2 t2id value
-------------
k1 kkk
k2 hhhtable3t3id value
-------------
h1 呵呵
h2 哈哈注:table1 的tableName 是其他表名 refId是关联的id字段...如何使用sql语句
使table1 动态查询所关联的value(根据tableName字段和refID来查到对应的value)期望结果:table1id tableName refId value
-------------------------------
1 table2 k1 kkk
2 table3 h1 呵呵
SQL
-----------------------
1 table2 k1
2 table3 h1table2 t2id value
-------------
k1 kkk
k2 hhhtable3t3id value
-------------
h1 呵呵
h2 哈哈注:table1 的tableName 是其他表名 refId是关联的id字段...如何使用sql语句
使table1 动态查询所关联的value(根据tableName字段和refID来查到对应的value)期望结果:table1id tableName refId value
-------------------------------
1 table2 k1 kkk
2 table3 h1 呵呵
SQL
table1.tableName,
table1.refId,
(select table2.value
from table2
where table2.t2id = table1.refId
union
select table3.value
from table3
where table3.t3id = table1.refId
) as value
from table1这样应该可以,机子没有装数据库过,有问题这个SQL你改改应该就可以了
你可以不用动态语句,直接的把表2和表3通过union all 连接起来
不好意思啊,我忘记说了一句
表名要从table1中列的值获取 才能得知其他的table2,3
好像要动态取值
http://bbs.csdn.net/topics/390544845
另外也可以用程序拼接集合做.