select min(id) from table_name where `from`=1 or `to`=1 group by `from`,`to`; 这个意思?
错了。是取大的哦。改成这样:select max(id) from table_name where `from`=1 or `to`=1 group by `from`,`to`;
SELECT * FROM ttj a LEFT JOIN ttj b ON a.`from`=b.`to` AND a.`to`=b.`from` WHERE b.`id`<a.`id`
select max(id) from ( select from,to,id from 数据示例 union all select to,from,id from 数据示例 ) t where from=1 group by from,to
当我再插一条记录如下: id from to 70 1 2 这时候就不行了
当我再插一条记录如下: id from to 70 1 2 这时候就不行了
数据要有代表性 SELECT DISTINCT MAX(id) FROM ( SELECT id,a.`from`,a.`to` FROM ttj a UNION ALL SELECT id,a.to,a.from FROM ttj a) a GROUP BY `from`,`to`
or SELECT nf,nt,MAX(id) FROM ( SELECT a.id,IF(a.`from`>b.`from`,b.`from`,a.`from`) AS nf , IF(a.`to`<b.`to`,b.`to`,a.`to`) AS nt FROM ttj a LEFT JOIN ttj b ON a.`from`=b.`to` AND a.`to`=b.`from` WHERE b.`id`<a.`id`) a GROUP BY nf,nt
WWWWA 和 ACMAIN_CHM 两位的都不错,非常感谢!具体实现时,我想这么做: 增加一列flag,内容是:CONCACT(min(from, to), '_', max(from, to)) 然后GROUP BY flag 这样就不需要UNION ALL 了,效率上会有提升。我这么做只是针对具体应用,话说二位的sql还是非常棒的,谢谢!
-----------------------------------------------------------------------
比如现在我输入:1,在from和to里面一共含有1的记录有三组,id分别是:10和20,30和40,50和60
取最新的,所以最后应该返回:20,40,60请大家针对需求,讨论一下,有没有高效快速的sql实现,谢谢!
FROM 、TO 交叉?
只要from和to二者中有一个含有我传入的数字,就认为这条数据符合要求,
然后再按照from和to分组,分组时from和to没有顺序,即:id为10和20的两条记录可以分为一组
最后再取得每组中id最大的那一条记录
因为from和to是通信双方,id为10的记录是1发送给2的,id为20的记录是2发送给1的,发信人和收信人都是这两个人,所以分为一组
WHERE b.`id`<a.`id`
from (
select from,to,id
from 数据示例
union all
select to,from,id
from 数据示例
) t
where from=1
group by from,to
当我再插一条记录如下:
id from to
70 1 2
这时候就不行了
id from to
70 1 2
这时候就不行了
SELECT DISTINCT MAX(id) FROM (
SELECT id,a.`from`,a.`to` FROM ttj a
UNION ALL
SELECT id,a.to,a.from FROM ttj a) a GROUP BY `from`,`to`
SELECT nf,nt,MAX(id) FROM (
SELECT a.id,IF(a.`from`>b.`from`,b.`from`,a.`from`) AS nf ,
IF(a.`to`<b.`to`,b.`to`,a.`to`) AS nt
FROM ttj a LEFT JOIN ttj b ON a.`from`=b.`to` AND a.`to`=b.`from`
WHERE b.`id`<a.`id`) a GROUP BY nf,nt
增加一列flag,内容是:CONCACT(min(from, to), '_', max(from, to))
然后GROUP BY flag
这样就不需要UNION ALL 了,效率上会有提升。我这么做只是针对具体应用,话说二位的sql还是非常棒的,谢谢!