gpt4 book ai didi

mysql 使用主键插入和更新

转载 作者:行者123 更新时间:2023-11-30 01:30:18 24 4
gpt4 key购买 nike

我有一个有 5 列的表。4 列将保持不变,只有第 5 列发生变化。

a  b   c   d   e

v1 v2 v3 v4 v10
v1 v2 v3 v4 v11
v1 v2 v3 v4 v12
v1 v2 v3 v4 v13
v1 v2 v3 v4 v14
v1 v2 v3 v4 v15
v6 v7 v8 v9 v16
v6 v7 v8 v9 v17
v6 v7 v8 v9 v18
v6 v7 v8 v9 v19
v6 v7 v8 v9 v20

前 4 列将始终具有相同的值,只有第 5 列值会发生变化。

我将列 a、b、c、d 作为主键并尝试下面的语句。

INSERT INTO $tablename( a,b,c,d,e)
VALUES(v1,v2,v3,v4,v5)
ON DUPLICATE KEY UPDATE e = VALUES(e);

我得到的结果是:

a  b   c   d   e

v1 v2 v3 v4 v15

我想要在我的数据库中拥有的是:

a  b   c   d   e

v1 v2 v3 v4 v10
v11
v12
v13
v14
v15
v6 v7 v8 v9 v16
v17
v18
v19
v20

最佳答案

您不能使主键包含空值。如果 (a,b,c,d) 是主键,则它的每一行都必须具有非空值。而且它不能具有所有相同值,因为主键必须是唯一的。

您误解了 INSERT .. ON DUPLICATE KEY UPDATE 的作用。这意味着,如果表中已经存在包含您尝试插入的主键或唯一键的行,它不会插入新行,而是根据您的情况更改现有行设置作业。

听起来您有一对多关系,并且需要第二个表。

The first 4 columns are going to be used as a combination to extract column 5. eg: (a,b,c,d) --> v10 By using a,b,c,d I am trying to pull data out of v5.

我不明白你的意思。主键不仅没有“从”属性列中“提取数据”,而且您提到了 v10,然后又提到了 v5,因此不清楚您在做什么。

关于mysql 使用主键插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com