我需要写下面的查询。假设我们有一个这样的表结构:main_table
:
id PRIMARY KEY
column1,
column2,
column3
table_1
:
id PRIMARY KEY
main_table_id REFERENCES main_table NOT NULL,
column1,
column2,
column3
table_2
:
id PRIMARY KEY
table_1_id REFERENCES table1 NOT NULL,
necessary_column
我需要通过到table_1
的链接从main_table
中获取在table_2.necessary_column
中具有给定值的数据。我该怎么做?
我写了一个查询2表,但我不知道如何做到这一点与3表。
2条答案
按热度按时间wr98u20j1#
通过到
table_1
的链接从table_2
中获取main_table
中具有necessary_column
列的数据有很多种方法。使用
EXISTS
演示一个查询,以便从main_table
中获取唯一行:你也可以只连接所有三个表,但这可能会增加行,你可能不得不添加另一个昂贵的
DISTINCT
:uujelgoq2#
问题描述不是很清楚。所以,很难肯定地回答。但是,似乎你需要更好地理解内连接和左连接之间的区别,以及我们可以链接这些操作。
让我们尝试使用一些更清晰的结构如下:
创建这些表并填充一些数据
查询
如果您想链接这三个需要所有连接的表之间的关系,您可以在任何方向上这样做。
换句话说,这个查询的结果:
这一个的结果是一样的:
但是,当我们使用 left join 链接查询时,链的顺序会有所不同。在下面的查询中可以看到: