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;

现在可以正常使用了。