给定一个查询,我在一个表中根据与另一个表的匹配查找“名称”字段,如何才能将匹配保留在第一个具有最长长度的表中?我知道 Max(Char_Length)
可能是找到最长的一个方法,但不确定如何返回它:
http://sqlfiddle.com/#!9/2b8b7fa/3
Select ID,T1.Name from ShortNames T1
Inner Join LongNames T2
On T2.Name Like Concat('% ', T1.Name)
or T2.Name like Concat(T1.Name,' %')
最佳答案
如果您需要所有列,您可以检查子选择中的最大长度
Select ID,T1.Name
from ShortNames T1
Inner Join LongNames T2
On T2.Name Like Concat('% ', T1.Name)
or T2.Name like Concat(T1.Name,' %')
where length(T1.Name from) = (
Select max(length(T1.Name from))
FROM ShortNames T1
Inner Join LongNames T2
On T2.Name Like Concat('% ', T1.Name)
or T2.Name like Concat(T1.Name,' %')
)
关于mysql - 根据名称字段的 Max(Char_Length) 从联接中的每个组中选择单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49844236/