表1:
id , otherColumn, otherColumn2 ...
表2:
id, table1_id, someOtherColumns...
即。一对多关系
琐碎的联接将是:
select * from table1 left outer join table2 on table2.table1_id=table1.id;
我想做一些不同的事情:对于table1中的每一行,最多只能从table2中获取1行,如果有多个候选者则无论如何。正如我可以限制常规选择的结果数量
这可能吗?怎么样?
答案 0 :(得分:1)
的可能性:
使用子选择。这将强制限制内部结果集。优点是可以使用分组/聚合操作。 (我不确定MySQL有什么问题,如果有的话,有子选择和整体查询计划。)
在主语句中使用WHERE并让SQL引擎“做它的事情”。如果WHERE可以在连接之前“移动”,则智能引擎将这样做,因为它将导致更少的行被处理。我认为这是基本的关系代数模型的一部分(对于独立的记录),但我不确定。查看查询计划。 (我不使用MySQL,所以我知道做了哪些优化。)
并且,如果重要的话,一如既往地验证结果并运行性能测试。
快乐的编码。