2017-12-20 13 views
-1

私はbooksというテーブルとpriceというカラムを持っています。その列のすべての値を更新するにはどうすればよいですか?以下は私が書いた質問です。MySQLの列の列に値のリストを追加するには?

INSERT INTO `books`(`price`) 
VALUES (176.00, 
     337.00, 
     234.00, 
     180.00, 
     135.00, 
     72.00, 
     72.00, 
     81.00, 
     135.00, 
     113.00, 
     162.00); 

これは現在、どのように表が見えるかです。

| Book ID | Price | 
|---------|-------| 
| a  |  | 
| b  |  | 
| c  |  | 
| d  |  | 

これは私が見たいものです。

| Book ID | Price | 
|---------|-------| 
| a  | 12 | 
| b  | 13 | 
| c  | 14 | 
| d  | 15 | 

誰でもどのようにクエリを変更する必要がありますか?既存の列を削除して新しい列を作成することもできます。

+3

新しい行をテーブルに挿入するには 'INSERT'を使い、既存の行を更新するには' UPDATE'を使います。 – jarlh

+0

質問を編集してサンプルテーブルのデータを追加し、期待される結果を表示してください。 (画像ではなく書式付きテキスト) – jarlh

+0

私は自分の質問を更新しました。今すぐお答えください。 –

答えて

1

これは使用できます。

INSERT INTO `books`(`price`) VALUES (176.00), 
(337.00), (234.00), (180.00), (135.00), (72.00), (72.00), (81.00), (135.00), (113.00), (162.00); 

更新する場合は、ソースデータにid値も必要です。 IDを持っていれば、このメソッドを使用することもできます。

CREATE TABLE `temp`(id int, `price` decimal(18,2)); 

INSERT INTO `temp`(`id`, `price`) VALUES 
(1, 176.00), 
(2, 337.00), 
(3, 234.00), 
(4, 180.00), 
(5, 135.00), 
(6, 72.00), 
(7, 72.00), 
(8, 81.00), 
(9, 135.00), 
(10, 113.00), 
(11, 162.00); 


UPDATE `books` 
INNER JOIN `temp` ON `books`.`id` = `temp`.id 
SET `books`.`price` = `temp`.`price`; 


INSERT INTO `books`(`price`) 
SELECT `price` FROM `temp` 
WHERE NOT EXISTS(SELECT * FROM `books` WHERE `books`.`id` = `temp`.`id`); 
+0

上記のクエリでは、既存のレコードを空にして新しいレコードを作成しています。 –

+0

私は、既存の値の更新についての更新を行いました。 –

1

あなたの問題のため、この解決策を試すことができます。

表構造:

CREATE TABLE books(price DECIMAL(20,6)) #ENGINE=MyISAM; 


INSERT INTO `books`(`price`) 
VALUES (176.00), (337.00), (234.00), (180.00), (135.00), (72.00), (72.00), (81.00), (135.00), (113.00), (162.00); 


SELECT * 
FROM books; 

を、あなたもsqlfiddleを参照することができます。

私はそれが役に立ちそうです。

関連する問題