Ответ 1
INSERT
синтаксис не может иметь предложение WHERE
. Единственный раз, когда вы найдете INSERT
, есть предложение WHERE
, когда вы используете инструкцию INSERT INTO...SELECT
.
Первый синтаксис уже правильный.
Я пробовал поиск по этой проблеме, но только нашел, как это сделать, используя две таблицы, как показано ниже:
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 != '');
Но это неправильно.. могу я знать правильный способ сделать это, спасибо, большое спасибо:)
INSERT
синтаксис не может иметь предложение WHERE
. Единственный раз, когда вы найдете INSERT
, есть предложение WHERE
, когда вы используете инструкцию INSERT INTO...SELECT
.
Первый синтаксис уже правильный.
Пример того, как выполнить INSERT INTO SELECT с предложением WHERE.
INSERT INTO #test2 (id) SELECT id FROM #test1 WHERE id > 2
Если я понимаю, что цель состоит в том, чтобы вставить новую запись в таблицу, но если данные уже находятся в таблице: пропустите ее! Вот мой ответ:
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
Вставляемая запись находится в новых значениях полей.
Заявление 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,...)