2017-03-17 143 views
0

我有一个表,存储元值,但是,在插入/更新我想执行 - 没有唯一的键(甚至不是一个列的组合)MySQL - 更新行,如果某列值等于插入行(没有重复键)

1列存储后的ID,1元值的VARCHAR键和1持有的元价值...

现在的问题是,该表CAN包含重复行,很容易,这可能发生:

id_post | key | value 
    5  'bobber'  4 
    3  'locer'  2 
    5  'bobber'  4 

现在我想做的是做插入的变化或重复密钥更新,问题是,我没有将触发更新的关键。

如果表中已经存在key值,我想更新相应的value列。如果不是,我想插入一个全新的行。

我发现的所有结果都是添加一个关键约束,这是我不能做的事情。
另外,我做的不是想创建一个存储过程/函数。

请帮忙吗?谢谢:-)

+1

你不能在SQL中这样做,你需要一种编程语言,它可以首先执行一个'SELECT',然后根据它是否发现任何内容或者'UPDATE'或'INSERT'。 – Barmar

+1

你的愿望没有意义。如果你想在密钥存在的时候进行“更新”,那么你就会说 - 你想要的密钥是唯一的,至少对于新数据进入表中。 –

+0

@GordonLinoff它从更广泛的角度来看,问题是我不想在KEY存在的情况下更新,但是如果存在COLUMN VALUE。无论如何,我不使用重复值的事实并不意味着有人/别的东西不使用它们......有些系统的设计方式是他们不存储数组作为1个序列化的值,但是〜数组值将作为行转换为DB。我希望你了解它:) –

回答

-1

你可以更新行id_post为主要或唯一键

ALTER TABLE 你的表名 ADD PRIMARY KEY(id_post);

+0

为什么你会用不同的表作为这个表的主键? – fubar

+0

一篇文章可以有更多的对,甚至更多相同的键值对... –

相关问题