如果我将query1限制为100k,则此脚本将创建一个新表,但如果我尝试传输所有300k条目,它将失败而不会出现错误。有什么建议吗?
$query1 = "SELECT DISTINCT city, region FROM geolocations";
$result = mysql_query($query1);
while ($row = mysql_fetch_assoc($result)) {
//create array of ids to select from DB
$id_arr[] = $row['location_id'];
}
mysql_free_result($result);
//join the array to create SELECT statement
$ids = join(',',$id_arr);
//create new table using data associated with locations_ids in id_arr
$query2 = "CREATE TABLE clean_gls SELECT * FROM geolocations WHERE location_id IN ($ids) ";
mysql_query($query2);
答案 0 :(得分:1)
正如Mat所说,你的代码似乎缺少一些东西,但是你应该真正考虑使用连接或子查询来生成你的位置id数组,以便所有处理都由服务器完成。
编辑:
所以,我仍然不明白你是如何从原始查询中获取location_id的,但也许这会做你想要的:
CREATE TABLE clean_gls (PRIMARY KEY (city, region)) IGNORE SELECT * FROM geolocations
如果IGNORE
不是您想要的,请尝试REPLACE
。
答案 1 :(得分:0)
如前所述,您的原始代码存在问题:
如果您尝试将不同的城市和区域组合放入新表中,则使用类似于以下内容的单个数据库执行来执行此操作:
CREATE TABLE clean_gls
SELECT DISTINCT city, region
FROM geolocations
答案 2 :(得分:0)
此查询有效我想选择不同的城市,区域组合,并将其与新表中的关联数据分组。
CREATE TABLE clean_gls SELECT * FROM geolocations GROUP BY city, region;