波纹管是一个示例表。
ID FROM TO DATE
1 Number1 Number2 somedate
2 Number2 Number1 somedate
3 Number2 Number1 somedate
4 Number3 Number1 somedate
5 Number3 Number2 somedate
Run Code Online (Sandbox Code Playgroud)
预期结果是为每对唯一的 TO 和 FROM 列获得 1 行
如果按 ID ASC 排序,则示例结果
(1,Number1,Number2)
(4,Number3,Number1)
(5,Number3,Number2)
Run Code Online (Sandbox Code Playgroud)
好的,我找到了如何使用以下查询执行此操作
SELECT * FROM table GROUP BY LEAST(to,from), GREATEST(to,from)
Run Code Online (Sandbox Code Playgroud)
但是,我无法获得每个唯一对的最新记录。
我试过,order by ID desc但它返回唯一对的第一个找到的行。
小智 5
SQL fiddle 由于某种原因无法正常工作,因此同时您需要帮助我来帮助您。
假设以下语句有效
SELECT
LEAST(to,from) as LowVal,
GREATEST(to,from) as HighVal,
MAX(date) as MaxDate
FROM table
GROUP BY LEAST(to,from), GREATEST(to,from)
Run Code Online (Sandbox Code Playgroud)
那么你可以加入
select t.*
from
table t
inner join
(SELECT
LEAST(to,from) as LowVal,
GREATEST(to,from) as HighVal,
MAX(date) as MaxDate
FROM table
GROUP BY LEAST(to,from), GREATEST(to,from)
) v
on t.date = v.MaxDate
and (t.From = v.LowVal or t.From = v.HighVal)
and (t.To = v.LowVal or t.To= v.HighVal)
Run Code Online (Sandbox Code Playgroud)