插入MySQL表或更新(如果存在)没有唯一键

时间:2017-04-09 12:07:31

标签: mysql

我知道有一种方法可以使用唯一的密钥来完成此结果,例如ID,但正如您在下面的案例中所见,这不会起作用,因为我没有一个唯一的密钥。

INSERT INTO User_Status (User_ID1, User_ID2, Status) VALUES(?, ?, ?) ON DUPLICATE KEY UPDATE Status = ?

问题是我在这个表格上没有唯一的ID,但目前有3个选项。 1)Twoo用户没有一个状态,换句话说:将其插入表格中。 2)用户1具有用户2的一个状态(1-2组合但是IS UNIQUE)。 3)与案例2相同,但转过身:用户2有一个用户1的状态(再次这个组合是独一无二的。)

如果已存在此选项,是否存在更新?

示例数据:

User_ID1     User_ID2     Status
1            4            has_send_request
4            1            has_received_request
4            2            friends
2            4            friends    

我想说我想将用户1-4的状态从has_send_request更新为朋友。在这种情况下,我可以执行正常的UPDATE查询。但是,如果我想从用户2-4更新状态,我需要进行一次INSERT查询而不是一次UPDATE查询。

1 个答案:

答案 0 :(得分:1)

请参阅附图,了解如何创建唯一密钥。

enter image description here