没有ON DUPLICATE KEY的MySQL INSERT/UPDATE

Dun*_*can 3 mysql insert

我可能误解了如何使用ON DUPLICATE KEY语法,或者我的数据库结构需要一些工作但是这里有.

我有一个表(bookings-meta)表示与另一个表(预订)相关联的元数据,预订表中的不同行可能有也可能没有在另一个表中与它们相关联的特定元数据.

bookings-meta表包含以下列:meta_id(主键),booking_id,键和值.

根据我的理解,使用ON DUPLICATE KEY我需要知道在这种情况下meta_id是什么,通常情况并非如此,我试图使用booking_id简单地将一个键,值对推送到表中,所以如果特定密钥存在然后替换否则插入.

目前我有一个单独的查询尝试选择行,如果找到它然后我更新,如果不是那么它的INSERT.

有没有办法在一个查询中进行插入/更新而不使用ON DUPLICATE KEY或者我错过了一个这个技巧?

cee*_*yoz 6

如果可能的话,我会meta_id完全删除列booking_idkey转换成复合主键.这样可以节省桌面空间,允许使用ON DUPLICATE KEY,并且通常更清洁.