0

16進色のテーブル(500行)と国のテーブル(〜250行)があります。ループを使用して各国を調べ、「color」列の16進テーブルから新しい16進色を割り当てたいと思います。

phpmyadminでこれを行うことはできますか?

4

1 に答える 1

0

サブクエリを含むステートメントを使用しUPDATEて、16進テーブルから値を選択します。

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

phpmyadminでデータベースを選択し、管理画面の上部にある[SQL]タブをクリックします。更新ステートメントを入力し、[実行]をクリックします

編集:色の値と国の間で1対1のマッピングを確保して、値が重複しないようにする場合は、各テーブルに一時的な列を追加します。つまりorder、その列に順次値を割り当てる更新を実行します。両方のテーブルについて、国のテーブルを16進カラーテーブルのカラー値で更新します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 に答える