我有4个表:Table1,Table2,Table3,Table4每个都是前面的一个细节,例如table4是table3的详细信息,依此类推。这是我的架构:
表1:
PK1 Integer,
Name1 varchar(15),...
表2:
PK2 Integer,
PK1 Integer, -- This is foreign key to Table1.PK1
Name2 varchar(15),...
表3:
PK3 Integer,
PK2 Integer, -- This is foreign key to Table2.PK2
Name3 varchar(15),...
表4:
PK4 Integer,
PK3 Integer, -- This is foreign key to Table3.PK3
Name4 varchar(15),...
我现在需要根据Table4中的某个值选择Table1中的记录,例如当Table4.PK4 = 3时。
所以我试着这样:
Select * from table1 where PK1 in (
select PK1 from Table2 where PK2 in (
select PK2 from Table3 where PK3 in (
select PK3 from Table4 where PK4 = 3
)))
我得到了正确的结果,但它是最佳/优化方式还是我应该使用更好的SQL?
答案 0 :(得分:2)
我认为这比其他答案有效。 你首先做的是加入,因为我很确定他的桌子不是那么大,所以这可能会非常重要。但是对于大数据我认为最好将where子句置于连接的ON条件
App