MySQL запрос справки - ЗАМЕНИТЬ В? - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть 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 не хранит идентификатор, только имя и тип.

Я хочу сделать следующее, и мне интересно, как лучше всего это сделать с наименьшим количеством запросов.

набор 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 Ответ

1 голос
/ 19 сентября 2011

Если вы используете mysql:

Сначала вы должны создать «уникальный» индекс для 2 полей: name и type (это один индекс, а не два)

Затем вставьте свои данные, используя этот запрос:

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

Чтобы получить идентификатор, просто запросите его (умный способ - mysql_insert_id () не работает с INSERT UPDATE)

SELECT id FROM `table` WHERE `name`= '$name' AND `type` = '$type'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...