php – 更新和删除合并记录的查询
发布时间:2020-12-13 17:00:41 所属栏目:PHP教程 来源:网络整理
导读:我有一张包含以下记录的表格 id | fname | lname | skills 22 | Jane | Doe | php,mysql 43 | Jane | Doe | java,oracle,php45 | Jane | Doe | mongo,mysql id是主键.我想执行一个查询,以便在表中看起来像这样 id | fname | lname | skills 45 | Jane | Doe
我有一张包含以下记录的表格
id | fname | lname | skills 22 | Jane | Doe | php,mysql 43 | Jane | Doe | java,oracle,php 45 | Jane | Doe | mongo,mysql id是主键.我想执行一个查询,以便在表中看起来像这样 id | fname | lname | skills 45 | Jane | Doe | php,mysql,java,mongo 技能将与最新的id和其他重复记录合并删除 任何帮助对我都非常有用. 解决方法
试试这个:
UPDATE YourTable t INNER JOIN(SELECT max(s.id) as max_id,s.fname,s.lname,GROUP_CONCAT(distinct(s.skills)) as skill_str FROM YourTable s GROUP BY s.fname,s.lname) t1 ON (t.lname = t1.lname and t.fname = t1.fname AND t.id = t1.max_id) SET t.skills = t1.skill_str 这会将表更新为您想要的concat,然后删除: DELETE FROM YourTable t WHERE t.ID NOT IN(SELECT MAX(s.id) FROM YourTable s GROUP BY s.lname,s.fname) 只有当ID是唯一的时,删除才有效!它将删除所有不是最大ID的记录 编辑:试试这个: DELETE t FROM candidate t LEFT JOIN(SELECT MAX(s.candidate_id) as max_id FROM candidate s GROUP BY s.fname,s.lname) t1 ON (t.candidate_id = t1.max_id) WHERE t1.max_id is null (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |