我通过这样做来创建我的表:
CREATE TABLE IF NOT EXISTS table_name (uuid VARCHAR(128), item VARCHAR(48), value FLOAT(11))
当我插入值时,我希望UUID和ITEM一起使用。我的意思是,如果有一个条目,其中uuid和item匹配新值,它将更新那个值。如果没有,它将创建一个新的。因此,我不希望UUID拥有一个unqiue密钥,也不希望ITEM。但我有点希望它们在一起变得独一无二。因此,UUID和ITEM都不能与其他条目的UUID和ITEM匹配。
如果我的解释不是很糟糕,有谁知道如何做到这一点?
答案 0 :(得分:3)
这是你要找的吗?首先制作uuid并设置主键。
CREATE TABLE IF NOT EXISTS table_name (uuid VARCHAR(128), item VARCHAR(48), value FLOAT(11), PRIMARY KEY(uuid, item)) ENGINE InnoDB;
然后使用“ON DUPLICATE UPDATE”
INSERT INTO table_name(UUID, item, value)
VALUES ('315c383c-b977-11e4-a6d1-954287e1d27a', 'item1', 1.0)
ON DUPLICATE KEY UPDATE value = VALUES(value);
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html Insert into a MySQL table or update if exists
答案 1 :(得分:0)
尝试这样的事情。
仅在新行组合时插入行
INSERT INTO table_name
SELECT uuid,
item,
value
FROM source_table S
WHERE NOT EXISTS (SELECT 1
FROM table_name T
WHERE S.uuid = T.uuid
AND s.item = t.item)
如果组合已存在,则更新行
UPDATE table_name T
JOIN source_table S
ON S.uuid = T.uuid
AND s.item = t.item
SET T.value = S.value