MySQL прямой INSERT INTO с предложением WHERE

Я пробовал поиск по этой проблеме, но только нашел, как это сделать, используя две таблицы, как показано ниже:

INSERT INTO tbl_member
SELECT Field1,Field2,Field3,... 
FROM temp_table
WHERE NOT EXISTS(SELECT * 
         FROM tbl_member 
         WHERE (temp_table.Field1=tbl_member.Field1 and
               temp_table.Field2=tbl_member.Field2...etc.)
        )

Это работало по одному сценарию, но теперь я заинтересован в том, чтобы загружать данные непосредственно из самой программы, не используя две таблицы. Я хочу загрузить данные, которых нет в таблице. У меня в голове было следующее:

INSERT INTO tbl_member (SensorIdValue, DataTimeValue, DataInValue, IncompleteValue, SpiValue, InfoValue)
VALUES ('Sensor.org', '20121017150103', 'eth0','','','')
WHERE (SensorIdValue != 'Sensor.org'AND DataTimeValue != '20121017150103'AND DataInValue != 'eth0'AND IncompleteValue != ''AND SpiValue != ''AND InfoValue != '');

Но это неправильно.. могу я знать правильный способ сделать это, спасибо, большое спасибо:)

Ответ 1

INSERT синтаксис не может иметь предложение WHERE. Единственный раз, когда вы найдете INSERT, есть предложение WHERE, когда вы используете инструкцию INSERT INTO...SELECT.

Первый синтаксис уже правильный.

Ответ 2

Пример того, как выполнить INSERT INTO SELECT с предложением WHERE.

INSERT INTO #test2 (id) SELECT id FROM #test1 WHERE id > 2

Ответ 3

Если я понимаю, что цель состоит в том, чтобы вставить новую запись в таблицу, но если данные уже находятся в таблице: пропустите ее! Вот мой ответ:

INSERT INTO tbl_member 
(Field1,Field2,Field3,...) 
SELECT a.Field1,a.Field2,a.Field3,... 
FROM (SELECT Field1 = [NewValueField1], Field2 = [NewValueField2], Field3 = [NewValueField3], ...) AS a 
LEFT JOIN tbl_member AS b 
ON a.Field1 = b.Field1 
WHERE b.Field1 IS NULL

Вставляемая запись находится в новых значениях полей.

Ответ 4

Заявление INSERT INTO
Инструкция INSERT INTO используется для вставки новой строки в таблицу. Синтаксис SQL INSERT INTO

Можно написать инструкцию INSERT INTO в двух формах.

В первой форме не указаны имена столбцов, в которые будут вставлены данные, только их значения:

INSERT INTO table_name
VALUES (value1, value2, value3,...)

Вторая форма определяет имена столбцов и значения, которые нужно вставить:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)