sql中一对多字段如何选取名字最长的字段

现在有表1包含字段id,age,money;表2中id,name,表1中id无重复,表二中,id很多重复,因为一个id对应多个name,如:id=1,对应有name有:三丰,张三丰,id=2对应name有:小明,刘小明
现在我想要结果集包含表1的id,money,age,并且关联表2获取name,但是我只要一个name名,而且想要最长的那个名,如何限定条件呢,我之前写的是,max(name),max应该是根据首字母的顺序排的大小,所以id=2选出来是小明而不是刘小明,所以请问如何解决这个问题呢

试试我写的这个,但是也有个问题,如果还有个刘大明,那么长度跟刘小明一样,你要怎么取?
如有帮助,请采纳。


select 
    t1.id,
    t1.money,
    t1.age,
    t2.name
from1 t1
left join 
(
    select id,name from(
    select id,name,
    ROW_NUMBER() OVER(partition by id order by length(name) desc)  col
    from2
    ) b
    where col=1
) t2 
on t1.id=t2.id

用max(length())可以不

先通过LENGTH()计算出每个id对应的最长的name,通过链接找到这个那么,最后再和表1关联

SELECT
    t1.id,
    t1.money,
    t1.age,
    temp.NAME 
FROM
    t1
    LEFT JOIN (
SELECT
    a.id,
    a.NAME 
FROM
    t2 AS a
    RIGHT JOIN ( SELECT id, max( LENGTH( NAME ) ) AS max_len FROM t2 GROUP BY id ) AS b ON LENGTH( a.NAME ) = b.max_len 
    AND a.id = b.id 
    ) AS temp ON t1.id = temp.id

有帮助的话请采纳~