MySQL CREATE 和 INSERT 在填充 table 时生成无序的记录序列
MySQL CREATE and INSERT yields an unordered sequence of records when the table is populated
Please, I acknowledge my #newbie state. Eery help is well appreciated.
所以我创建了一个table n_s
如下
CREATE TABLE n_s (
state_id INT PRIMARY KEY AUTO_INCREMENT,
state_name VARCHAR(50),
state_capital VARCHAR(50),
faac DECIMAL(16,2)
);
然后像这样填充它
INSERT INTO n_s(state_name, state_capital, faac) VALUES ('Ab','Um',520),
('Ad','Yl',483),
('Akm','Uy',171);
至此,我得到了一个好看的table.
当我想用新值填充这个 table 时,问题就出现了。首先,我这样做了:
ALTER TABLE n_s ADD g_usd DECIMAL(30,2);
它工作正常。但后来我尝试用
填充 table
INSERT INTO n_s(g_usd) VALUES
(6073488295.68),
(5815471618.60),
(13267272645.16);
结果 SELECT * FROM n_s;
是以下“无序” table:
然而,我真正想通过上述步骤实现的是:
您需要 UPDATE
现有行,而不是 INSERT
新行。
例如,您可以这样做:
update n_s set g_usd = 6073488295.68 where state_id = 'Ab';
update n_s set g_usd = 5815471618.60 where state_id = 'Ad';
update n_s set g_usd = 13267272645.16 where state_id = 'Akm';
终于找到解决方法了。
我只需要更换
INSERT INTO n_s(g_usd) VALUES
(6073488295.68),
(5815471618.60),
(13267272645.16);
和
INSERT INTO n_s(state_id, g_usd) VALUES
(1, 6073488295.68),
(2, 5815471618.60),
(3, 13267272645.16) AS gs
ON DUPLICATE KEY UPDATE g_usd = gs.g_usd;
现在可以正常使用了。
Please, I acknowledge my #newbie state. Eery help is well appreciated.
所以我创建了一个table n_s
如下
CREATE TABLE n_s (
state_id INT PRIMARY KEY AUTO_INCREMENT,
state_name VARCHAR(50),
state_capital VARCHAR(50),
faac DECIMAL(16,2)
);
然后像这样填充它
INSERT INTO n_s(state_name, state_capital, faac) VALUES ('Ab','Um',520),
('Ad','Yl',483),
('Akm','Uy',171);
至此,我得到了一个好看的table.
当我想用新值填充这个 table 时,问题就出现了。首先,我这样做了:
ALTER TABLE n_s ADD g_usd DECIMAL(30,2);
它工作正常。但后来我尝试用
INSERT INTO n_s(g_usd) VALUES
(6073488295.68),
(5815471618.60),
(13267272645.16);
结果 SELECT * FROM n_s;
是以下“无序” table:
然而,我真正想通过上述步骤实现的是:
您需要 UPDATE
现有行,而不是 INSERT
新行。
例如,您可以这样做:
update n_s set g_usd = 6073488295.68 where state_id = 'Ab';
update n_s set g_usd = 5815471618.60 where state_id = 'Ad';
update n_s set g_usd = 13267272645.16 where state_id = 'Akm';
终于找到解决方法了。
我只需要更换
INSERT INTO n_s(g_usd) VALUES
(6073488295.68),
(5815471618.60),
(13267272645.16);
和
INSERT INTO n_s(state_id, g_usd) VALUES
(1, 6073488295.68),
(2, 5815471618.60),
(3, 13267272645.16) AS gs
ON DUPLICATE KEY UPDATE g_usd = gs.g_usd;
现在可以正常使用了。