PHP/MySQL:通过有序选择更新有序行
我花了一个多小时寻找我问题的答案,现在我真的很绝望。我希望过去经常帮助我的那个令人敬畏的网站上的你们能再次帮助我 我需要一个PHP/MySQL的解决方案,无论哪个做什么。性能也不是问题。遗憾的是,我必须处理没有主键的给定表 现实世界问题的逻辑是,一个t2.name可能有多个事件,可以按t2.date排序。可能存在一个等于t2.name的t1.name,它可能有多个事件,一个人可以按另一列t1.time排序。现在我想合并相同名称的事件,按时间匹配。换言之:具有t1.name和最新t1.time的行应与具有最新t2.date的相同t2.name匹配。第二次出现的名称应与第二次出现的最新日期和时间相匹配,依此类推。我是如何认识到这一点的 在失败的语法中描述-我已经尝试了以下方法(以及更多): 及 我想要的是:PHP/MySQL:通过有序选择更新有序行,php,mysql,Php,Mysql,我花了一个多小时寻找我问题的答案,现在我真的很绝望。我希望过去经常帮助我的那个令人敬畏的网站上的你们能再次帮助我 我需要一个PHP/MySQL的解决方案,无论哪个做什么。性能也不是问题。遗憾的是,我必须处理没有主键的给定表 现实世界问题的逻辑是,一个t2.name可能有多个事件,可以按t2.date排序。可能存在一个等于t2.name的t1.name,它可能有多个事件,一个人可以按另一列t1.time排序。现在我想合并相同名称的事件,按时间匹配。换言之:具有t1.name和最新t1.time的行
t1.name t1.time t2.date
Pete Nov13 Dec13
Pete Apr13 Mar13
Pete Jan12 Feb11
我希望我能表明我的观点
感谢您提前提供的任何信息 为每个表创建自动递增键并与该键匹配
SELECT t1.name, t1.time, t2.date
FROM (SELECT (@cnt := @cnt + 1) AS rowNumber, t1.* FROM (SELECT * FROM t1 ORDER BY time) AS t1 CROSS JOIN (SELECT @cnt := 0) AS dummy) AS t1,
(SELECT (@cnt := @cnt + 1) AS rowNumber, t2.* FROM (SELECT * FROM t2 ORDER BY date) AS t2 CROSS JOIN (SELECT @cnt := 0) AS dummy) AS t2
WHERE t1.rowNumber = t2.rowNumber
t1.name t1.time
Pete Nov13
Pete Apr13
Pete Jan12
t2.name t2.date
Pete Mar13
Pete Feb11
Pete Dec13
t1.name t1.time t2.date
Pete Nov13 Dec13
Pete Apr13 Mar13
Pete Jan12 Feb11
SELECT t1.name, t1.time, t2.date
FROM (SELECT (@cnt := @cnt + 1) AS rowNumber, t1.* FROM (SELECT * FROM t1 ORDER BY time) AS t1 CROSS JOIN (SELECT @cnt := 0) AS dummy) AS t1,
(SELECT (@cnt := @cnt + 1) AS rowNumber, t2.* FROM (SELECT * FROM t2 ORDER BY date) AS t2 CROSS JOIN (SELECT @cnt := 0) AS dummy) AS t2
WHERE t1.rowNumber = t2.rowNumber