我看到了一些相关的帖子,试图修改示例以使其适合我的情况,但没有做到。

我有3个表:ABC包含数百万条记录。

我希望能够:


过滤A表的某些记录。
然后,在过滤后的表上,通过基于两个表中的共享列将其与B表联接来再次对其进行过滤。
然后,在过滤后的表上通过基于两个表中的共享列将其与C表联接来进一步过滤
计算c表上的记录数量。


我试过的是:

select count(*) from
    (select  A.exmp_column from A where A.insert_date BETWEEN '2018-03-28 00:10:38' and '2018-03-29 00:10:38') as a,

    (select * from B where a.shared_column = B.shared_column) as b,

    (select * from C where b.shared_column = C.shared_column) as c;


但似乎我不能在内部选择中使用别名ab。如何实现所需的内容?

抱歉,如果我的术语不正确,我是SQL的新手。
谢谢

最佳答案

这是你想要的吗?

select count(*)
from A
inner join B on A.shared_column = B.shared_column
inner join C on B.shared_column = C.shared_column
where A.insert_date BETWEEN '2018-03-28 00:10:38' and '2018-03-29 00:10:38'

关于mysql - MySQL:在另一个内部选择中访问内部选择表别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50468818/

10-12 04:54