我有一個簡單的表:我該怎麼辦某種UPSERT內的Postgres 9.5
NAME | TIMESTAMP | AMOUNT
--------------------------
Name1 | 123 | 1
Name2 | 123 | 15
Name3 | 124 | 3
Name4 | 125 | 1
等。 現在我得到一個新的記錄。如果名稱和時間戳相等,我希望數量增加新記錄的數量,否則應該插入新記錄。
喜歡的東西:
INSERT INTO test.data (NAME, TIMESTAMP, AMOUNT) values ('Name1', 123, 4)
IF not EXIST; OTHERWISE UPDATE test.data set AMOUNT + NEWAMOUNT where TIMESTAMP = oldTimestamp and NAME = oldName
這在某種程度上可能與使用的是Postgres 9.5一個簡單的SQL查詢?
感謝
其實,留名時間戳是唯一的。這兩者聯合是唯一的..表中還有一個ID是實際的主鍵.. – Christian
@Christian:給定你使用名稱,時間戳的方式,但你確實認爲它是唯一的。 –
也許我誤解了你,但正如你在例子中看到的那樣,NAME和TIMESTAMP可以(也將會)發生很多次。它實際上是一個彙總表,它說:名稱爲bla的傳感器在TIMESTAMP和AMOUNT實例中處於活動狀態 – Christian