我的数据库中有一个继承关系,我有一个父表(表A),它基本上是一个自动递增整数序列(Id列)。从这里开始,我有几个表(表B,C& D)也有一个Id列,它是表A中Id列的外键。
现在我的问题是,如果我有Id,那么从表B,C或D中获取正确行的最有效方法是什么?
编辑:表B,C或D中只有一行带有Id(其他2中不会有匹配的行)。
答案 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;