我有一张名为books
的表和一个名为price
的列。如何更新该列中的所有值?以下是我写的查询。
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);
目前这是y表的外观。
| Book ID | Price |
|---------|-------|
| a | |
| b | |
| c | |
| d | |
这就是我想要的样子。
| Book ID | Price |
|---------|-------|
| a | 12 |
| b | 13 |
| c | 14 |
| d | 15 |
任何人都可以建议我应该如何修改查询?我也可以删除现有列并创建一个新列。
你可以用它。
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`);
您可以针对您的问题尝试此解决方案:
表结构:
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。
我希望它会有所帮助。