如何跨多个表联接以基于一个表的最小值拉取值

时间:2018-07-16 22:57:16

标签: mysql sql

标题涵盖了我的问题要点,但我有三个要加入的表

------------
|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上的其他数据进行分组

0 个答案:

没有答案