更新或替换现有的多个数据(如果不存在)插入而不知道唯一键

时间:2016-10-04 07:34:05

标签: php mysql

我有下面的表格 enter image description here

我的查询是:

INSERT INTO geo_layer (map_id, user_id, type, lat, lng, more_info) VALUES ('".$geo_id."','".$user_id."','".$type."','".$latln_0."','".$latlng_1."','".$more_info."') ON DUPLICATE KEY UPDATE map_id = '".$geo_id."', user_id = '".$user_id."', type = '".$type."', lat = '".$latln_0."', lat = '".$latlng_1."', more_info = '".$more_info."' WHERE map_id = '".$geo_id."' AND user_id = '".$user_id."'";

查询输出是:

INSERT INTO geo_layer (map_id, user_id, type, lat, lng, more_info) VALUES ('82','1','Point','88.409042358398','22.544903493838','') ON DUPLICATE KEY UPDATE map_id = '82', user_id = '1', type = 'Point', lat = '88.409042358398', lat = '22.544903493838', more_info = '' WHERE map_id = '82' AND user_id = '1'INSERT INTO geo_layer (map_id, user_id, type, lat, lng, more_info) VALUES ('82','1','Point','88.467063903809','22.564244372033','') ON DUPLICATE KEY UPDATE map_id = '82', user_id = '1', type = 'Point', lat = '88.467063903809', lat = '22.564244372033', more_info = '' WHERE map_id = '82' AND user_id = '1'INSERT INTO geo_layer (map_id, user_id, type, lat, lng, more_info) VALUES ('82','1','Point','88.401719927788','22.506530781509','') ON DUPLICATE KEY UPDATE map_id = '82', user_id = '1', type = 'Point', lat = '88.401719927788', lat = '22.506530781509', more_info = '' WHERE map_id = '82' AND user_id = '1'

我想要的是: 我喜欢更新/替换多列的现有数据,如果要插入新数据。但我无法访问像主键这样的唯一ID。数据来自一个没有任何先前信息的数组。

问题是除了“layer_id”(自动增量)没有什么是唯一的,我不知道在运行我的查询之前是什么是layer_id。

解决方案我正在考虑检查现有值的每一行,然后插入新的或更新/替换先前或两者兼而有之。

如果需要更多详细信息,请与我们联系。

0 个答案:

没有答案