2011-01-12 4 views
0

Я запутался в этом запросе, когда он использует инструкцию insert, а затем игнорирует и затем выбирает. Может ли кто-нибудь объяснить мне это? Thanksзапрос вставить и выбрать объяснение

INSERT IGNORE INTO 
     myTable 
    SELECT 
     $var1 AS `CMMNCTID`, 
     $var2 AS `ENCID`, 
     variableID, 
     ProductID, 
     CustomerID, 
     Age, 
     "" AS `myJ`, 
     "" AS `myI` 
    FROM 
     table2 
    JOIN 
     table3 
    ON 
     table2.ID= table3.ID 

ответ

0

SELECT - это подзапрос. То, что делает INSERT, это вставить все, что содержится в соединении table2 и table3, в myTable. IGNORE сообщает ему игнорировать любые записи для ключей, которые уже существуют в myTable, и просто вставить то, что еще не существует.

Похоже, что цель запроса состоит в объединении данных, связанных между table2 и table3, и сбрасывает их в myTable.

+0

Обычно инструкция insert имеет значение mysql в таблицу (column1, column2) значение (val, val2), но мы не видим, что здесь ... почему и как он знает, куда вставлять – user400749

+0

@ user400749: 'AS ...' части, которые вы видите в запросе 'SELECT', соответствуют столбцам в' myTable'. – BoltClock

1

INSERT IGNORE в ключевом слове mysql: Если вставка вызовет ошибку Первичного или Уникального ключа, она должна пропустить эту строку.

INSERT ... SELECT: Используется для копирования данных из другой таблицы.

http://dev.mysql.com/doc/refman/5.1/en/insert.html

0

Он принимает результаты от SELECT запроса на таблицы table2 и Таблица3 и вставляет результаты в таблицу MyTable. Ключевое слово IGNORE просто говорит mysql игнорировать любые ошибки, возникающие при выполнении запроса INSERT.

Смежные вопросы