标题涵盖了我的问题要点,但我有三个要加入的表
------------
|table1 |
|id | data1|
------------
-----------------------------
|table2 |
|id | table1_id | table3_id |
-----------------------------
-----------------------
|table3 |
|id | name | priority |
-----------------------
表2充当表1和表3之间的联接表,对多对多关系进行建模。我希望主要查询表1中的数据,但我也需要表3中的数据。总的来说,我需要选择优先级最低的table1.data1和table3.name。
到目前为止,我最好的主意是这样的:
select data1 from table1
join (select table3.name, table2.table1_id, min(table3.priority) from
table2 join table3 on table2.table3_id = table3.id
group by table2.table1_id
) t on t.table1_id = table1.id
group by data1
但是该查询没有基于min(priority)来获取名称,因此它获取了错误的数据。任何帮助将不胜感激,由于数据表很大,我正尝试避免任何其他子查询。我在想那里应该有一个having子句或更复杂的连接条件,但是我不确定如何获取正确的数据。另外请注意,我将按表1上的其他数据进行分组