Mysql 如何使用基于其他表值的更新对表内容进行排序

Mysql 如何使用基于其他表值的更新对表内容进行排序,mysql,mysql-workbench,Mysql,Mysql Workbench,我有两个表都有一些值 CREATE TABLE one (ID not null, Col1 char, Col2 char, Col3 char, Col4 char, Col5 char); Insert into one (ID, Col1, Col2, Col3, Col4, Col5) VALUES (1, 'S', 'D', 'X', 'Y', 'M', 'K'); 另一个表包含每个字母所指的数字(例如:S=13,D=1,X=7,Y=3,M=2,k=30) 我需要将这两个表与jo

我有两个表都有一些值

CREATE TABLE one (ID not null, Col1 char, Col2 char, Col3 char, Col4 char, Col5 char);
Insert into one (ID, Col1, Col2, Col3, Col4, Col5) VALUES (1, 'S', 'D', 'X', 'Y', 'M', 'K');

另一个表包含每个字母所指的数字(例如:S=13,D=1,X=7,Y=3,M=2,k=30)

我需要将这两个表与join一起使用,并更新要从最大到最小排序的col

预期结果:1,k,s,x,y,m,d

这就是我到目前为止所累的:

UPDATE one
INNER JOIN two a on (one.Col1 = a.Colname)
INNER JOIN two b on (one.Col2 = b.Colname) 
INNER JOIN two c on (one.Col3 = c.Colname) 
INNER JOIN two d on (one.Col4 = d.Colname) 
INNER JOIN two e on (one.Col5 = e.Colname) 
SET
one.Col1 = (@temp:=one.Col1), one.Col1 = if ((b.ColValue > (a.ColValue and c.ColValue and d.ColValue and e.ColValue)),one.Col2,@temp), 
one.Col2 = if (one.Col1 = b.Col2, a.CardName, one.Col2);
在上面的例子中,我也会根据之前的值是否被交换来交换这些值


我被困在试图交换其余的,我相信有一个更容易的方法,但我真的想不出任何其他的时候。非常感谢您的帮助

看——这是你需要的吗

UPDATE one
SET col1 = SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT GROUP_CONCAT(letter ORDER BY weight DESC) FROM two LIMIT 1), ',', 1), ',', -1),
    col2 = SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT GROUP_CONCAT(letter ORDER BY weight DESC) FROM two LIMIT 1), ',', 2), ',', -1),
    col3 = SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT GROUP_CONCAT(letter ORDER BY weight DESC) FROM two LIMIT 1), ',', 3), ',', -1),
    col4 = SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT GROUP_CONCAT(letter ORDER BY weight DESC) FROM two LIMIT 1), ',', 4), ',', -1),
    col5 = SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT GROUP_CONCAT(letter ORDER BY weight DESC) FROM two LIMIT 1), ',', 5), ',', -1),
    col6 = SUBSTRING_INDEX(SUBSTRING_INDEX((SELECT GROUP_CONCAT(letter ORDER BY weight DESC) FROM two LIMIT 1), ',', 6), ',', -1);

您的意思是
值(1,'S','D',…)
?字符串必须用引号括起来。是的,是sorryHi thanx尝试了,但我不需要使用两个表来更新表1的值。如果是这样,请添加到问题中-表2(DDL+数据,如表1所示),设计此(表1和表2)数据的结果。