PHP MySQL вставка выбрать несколько с предложением где - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть следующее

Table1 : userid, who, share, date  :: id is auto increment and primary key

Я хотел бы создать запрос, чтобы проверить, существует ли запись и вставить новую запись, если она пуста.Как построить это в одном запросе и вставить несколько записей, используя один запрос

data to inser ('a1','a2','a3','a4'), ('b1','b2','b3','b4'), ('c1','c2','c3','c4'), .......

Ответы [ 3 ]

2 голосов
/ 10 февраля 2012
  1. Создать UNIQUE индекс для столбца, который вы хотите быть уникальным
  2. Используйте INSERT IGNORE для вставки уникальных данных и игнорирования не уникальных
0 голосов
/ 10 февраля 2012

Вы должны внимательно взглянуть на mysql INSERT INTO документацию .

Как вставить "на не существует" просто.Допустим, вы хотите, чтобы комбинация user,who,share была уникальной и использовала самую последнюю дату.Обновите свою таблицу и создайте UNIQUE KEY в этих полях:

ALTER TABLE Table1 ADD UNIQUE KEY (user, who, share);

Обычно вставка той же комбинации может привести к ошибке, но использование INSERT IGNORE (ссылка выше) будет игнорировать ошибку:

INSERT IGNORE INTO Table1 (user,who,share,date) VALUES ( 1, 2, 3, NOW());

Вы также можете принудительно нажать клавишу для обновления при вставке:

INSERT IGNORE INTO Table1 (user,who,share,date) VALUES ( 1, 2, 3, NOW())
       ON DUPLICATE KEY UPDATE date = VALUES(date);

И одновременно вставить несколько значений, снова первая ссылка:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
0 голосов
/ 10 февраля 2012

Вы можете использовать оператор ЗАМЕНИТЬ, который работает так же, как INSERT, только он ничего не делает, если строка уже существует:

REPLACE INTO table ...

http://dev.mysql.com/doc/refman/5.0/en/replace.html

...