我正在尝试从表 A 中选择项目,其中表 B 中存在给定约束的等效项目。表 A 中的每个 id 有一行,但每个表 A 行有很多行。
select distinct A.id
from A inner join B on B.a_id = A.id
where B.x >= 5 and B.x <= 10;
我想知道是否有一个 SQL 连接子句可以用来确保每个表 A 行只有一行。
据我了解,查询将找到约束,执行内部联接,然后对此执行不同的。如果这是正确的,并且有更好的方法来指示数据库仅从 A 中获取不同的行,我想知道。我确信有很多方法可以在查询语义的约束下解释和执行查询。我不能声称理解explain
输出。
有没有办法简化这个?如果这有什么不同,我会被限制在 SQLite 上。
编辑
约束子句有两个约束,在我现在添加的查询时定义。我试图让问题尽可能简单,但为了回应评论添加了额外的条款以确保完整性。