0

我有一张十六进制颜色表(500 行)和一张国家表(~250 行)。我想使用循环遍历每个国家/地区,从“颜色”列中的十六进制表中为其分配新的十六进制颜色

我可以在 phpmyadmin 中执行此操作吗?

4

1 回答 1

0

使用UPDATE带有子查询的语句从十六进制表中选择值:

UPDATE `countries` SET `color` = 
    (SELECT `color` FROM `hex_colors` ORDER BY RAND() LIMIT 1)

在 phpmyadmin 中,选择您的数据库,然后单击管理屏幕顶部的 SQL 选项卡。输入更新语句,然后点击“Go”

编辑:如果您想确保颜色值和国家/地区之间的一对一映射,以便没有重复的值,我会在每个表中添加一个临时列,即order运行一个更新,将顺序值分配给该列对于这两个表,然后使用十六进制颜色表中的颜色值更新国家表,并通过以下方式连接order

SELECT @i := 0;
SELECT @j := 0;
ALTER TABLE `countries` ADD COLUMN `order` INT;
ALTER TABLE `hex_colors` ADD COLUMN `order` INT;
UPDATE `countries` SET `order` = @i := @i + 1;
UPDATE `hex_colors` SET `order` = @j := @j + 1;
UPDATE `countries` c, `hex_colors` h SET c.`color` = h.`color` 
  WHERE c.`order` = h.`order`;
ALTER TABLE `countries` DROP COLUMN `order`;
ALTER TABLE `hex_colors` DROP COLUMN `order`;
于 2012-05-03T22:58:19.750 回答