这是一个表结构。表2与表1具有多对一关系。表3与表2具有多对一关系。
table 1 -> id_1, data table 2 -> id_2, data, id_1 table 3 - > id_3, data, filter, id_2
字符串我想从表1中选择所有数据,其中表3的过滤器!= 'abc';我不确定我的问题是否表达正确,问题的标题也有点模糊(请帮助我纠正)。
r1zk6ea11#
看起来像一个连接:
select a.* from table1 a join table2 b on b.id_1 = a.id_1 join table3 c on c.id_2 = b.id_2 where c.filter <> 'abc'
字符串
7gcisfzg2#
如果你想匹配table1中的行,而table3中不存在对应的行,其中filter = 'abc',那么你可以使用NOT EXISTS并跨桥接表进行连接:
table1
table3
filter = 'abc'
NOT EXISTS
SELECT * FROM table1 t1 WHERE NOT EXISTS( SELECT 1 FROM table2 t2 INNER JOIN table3 t3 ON (t2.id_2 = t2.id_2) WHERE t1.id_1 = t2.id_1 AND t2.filter = 'abc' );
2条答案
按热度按时间r1zk6ea11#
看起来像一个连接:
字符串
7gcisfzg2#
如果你想匹配
table1
中的行,而table3
中不存在对应的行,其中filter = 'abc'
,那么你可以使用NOT EXISTS
并跨桥接表进行连接:字符串