当只知父表id时,如何查询具体表

时间:2009-03-07 03:18:06

标签: sql sql-server-2005

我的数据库中有一个继承关系,我有一个父表(表A),它基本上是一个自动递增整数序列(Id列)。从这里开始,我有几个表(表B,C& D)也有一个Id列,它是表A中Id列的外键。

现在我的问题是,如果我有Id,那么从表B,C或D中获取正确行的最有效方法是什么?

编辑:表B,C或D中只有一行带有Id(其他2中不会有匹配的行)。

1 个答案:

答案 0 :(得分:1)

您可以使用联合查询...即:

select 'TABLE B', a_id from b where a_id = 1
UNION
select 'TABLE C', a_id from c where a_id = 1
UNION
select 'TABLE D', a_id from d where a_id = 1;

这将为您提供a_id为1的表的列表,同时还显示它所驻留的表。

如果所有3个表具有相同的结构,您可以执行类似的操作:

select b.* from b where a_id = 1
UNION
select c.* from c where a_id = 1
UNION
select d.* from d where a_id = 1;