在需要3个表格的数据时,是否可以得到1个结果。
第一张表:我需要抓住所有字段(主键找到1行)
第二张表:我需要获取'用户名'字段(通过'master_id'连接到第一个表)
第三个表:我需要使用关联的master_id键获取最新添加的行(表有'date','master_id','previous_name')。
答案 0 :(得分:5)
select top 1 first.*, second.username, third.*
from first
inner join second on first.id = second.master_id
inner join third on first.id = third.master_id
order by
third.date desc
一如既往,有很多方法可以为猫提供皮肤,我不确定它是否作为子查询方法进行了优化,但它应该可以正常工作。
答案 1 :(得分:1)
您可以将三张桌子连在一起。然后,您可以使用“过滤器”连接来仅保留最新的Table3行:
select *
from Table1 t1
join Table2 t2
on t2.master_id = t1.master_id
join Table3 t3
on t3.master_id = t1.master_id
join (
select master_id
, max(date) as max_date
from Table3
group by
master_id
) as filter
on t3.master_id = filter.master_id
and t3.date = filter.max_date
答案 2 :(得分:1)
您需要第三个表的相关子查询。
SELECT t1.*, username, date, previous_name
FROM FirstTable t1
INNER JOIN SecondTable t2 ON t1.master_id=t2.master_id
INNER JOIN
(SELECT master_id, date, previous_name
FROM ThirdTable AS t3_1
WHERE date = (
SELECT MAX(date)
FROM ThirdTable AS t3_2
WHERE t3_2.master_id=t3_1.master_id)) q1 ON q1.master_id=t1.master_id;
注意:未经测试。