我希望能够检查连续保存的数据,然后如果已存在的值存在 BOTH 值,则插入或追加,我该怎么办?
我要检查的值是Lat和Lon,两者都会被检查,如果它们与发送的数据相同,则附加描述,否则添加一个新行:
Table Layout e.g.:
ID(Unique) | Lat | Lon | Description | Date
1 0.1 0.1 Test some date
Data being sent:
Lat: 0.1, Lon: 0.1, Description: Test2
I would therefore like the table to end up like this:
ID(Unique) | Lat | Lon | Description | Date
1 0.1 0.1 **Test, Test2** some date
More data being sent:
Lat: 0.2, Lon: 0.1, Description: Test3
After:
ID(Unique) | Lat | Lon | Description | Date
1 0.1 0.1 Test, Test2 some date
2 0.2 0.1 Test3 some date
我一直在寻找UPDATE,但我似乎无法获得正确的语法:
答案 0 :(得分:2)
如果将Lat和Lon设置为复合唯一键,则可以使用INSERT...ON DUPLICATE KEY UPDATE语法。
INSERT INTO tableName (Lat, Lon, Description, Date) VALUES
(0.1, 0.1, 'Test 2', NOW())
ON DUPLICATE KEY UPDATE
Description = CONCAT(Description, ', Test2')
这样做的缺点是非ANSI(因此不可移植)SQL。
答案 1 :(得分:1)
您尝试做出正确答案的很少。规范化是。
通常,您会创建一个类似于以下内容的关系表:
ID | Description(unique)
并存储所有描述。
答案 2 :(得分:0)