我有像
这样的数据旧表
acc|name|group|priority
1 |aa |g1 |1
2 |aa |g1 |2
3 |aa |g1 |2
4 |gg |g2 |3
5 |gg |g2 |4
6 |gg |g2 |4
. |. |. |.
xx |xx |xx |x
我想用sql更新名称到新表
新表
console.log(CKEDITOR.instances['content']);
if (CKEDITOR.instances['content']) {
try {
CKEDITOR.instances['content'].destroy(true);
} catch (e) { }
}
CKEDITOR.replace('content');
CKEDITOR.instances['content'].setData(content);
在表格中,组g1中的名称必须更新为aa,组g1中的优先级最低。 您是否有任何想法更新所有具有最低优先级名称的组?
答案 0 :(得分:1)
我希望你先尝试自己的努力。
最初我分享这个想法:
inner join
您刚从匹配组中获得的第1步表,然后进行更新
具有行优先级大于最小优先级的行的每一行
相应的小组。最后找出你自己的解决方案并检查我正在给出的解决方案:
UPDATE your_table YT
INNER JOIN
(
SELECT
A.*
FROM your_table A
INNER JOIN
(
SELECT
`group` AS group_name,
min(priority) AS min_priority
FROM your_table
GROUP BY `group`
) AS B
ON A.`group` = B.group_name
AND A.priority = B.min_priority
) AS helper
ON YT.`group` = helper.`group`
SET YT.name = helper.name
WHERE YT.priority > helper.priority;
测试架构:
create table your_table (
acc int,
name varchar(30),
`group` varchar(30),
priority int
);
insert into your_table values(1,'aa','g1',1);
insert into your_table values(2,'ff','g1',2);
insert into your_table values(3,'ss','g1',2);
insert into your_table values(4,'gg','g2',3);
insert into your_table values(5,'uu','g2',4);
insert into your_table values(6,'dd','g2',4);
警告: group
是mysql中的保留字。每当您使用任何保留字命名您的标识符时,您需要使用反引号(`)...Read more