mysql查询帮助 - REPLACE INTO?

时间:2011-09-19 13:18:18

标签: mysql sql

我有PHP file读取CSV文件并将值存储到SQL表中。

SQL表有4列

 id - primary key (just auto incremented integer)
 name - text value of an object name
 type - an integer value representing the type of object
 active - a bool to set if the object is active

问题是CSV file不存储id,只存储名称和类型。

我想要执行以下操作,并想知道最好的方法是使用最少量的查询。

为表格中的每个条目设置active to 0

For each entry in the CSV
if (name and type already exists in table)
  set active to 1 
else 
   add new entry to the table

return the id for the existing or new entry

任何帮助将不胜感激

由于

  • 只是一个注释,它只是我之后的mysql查询,而不是php代码等......

1 个答案:

答案 0 :(得分:1)

假设您使用的是mysql:

首先,您必须创建" unique" 2个字段的索引:nametype(它的一个索引不是两个)

然后使用此查询插入您的数据:

INSERT INTO `table` (`name`,`type`,`active`) VALUES ($name,$type,0)
  ON DUPLICATE KEY UPDATE active = 1

为了获取ID,您只需查询它(聪明的方式 - mysql_insert_id()不能使用INSERT UPDATE)

SELECT id FROM `table` WHERE `name`= '$name' AND `type` = '$type'