it-swarm.com.ru

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

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

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.)
        )

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

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 != '');

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

10
Hasitha Shan

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

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

15
John Woo

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

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

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

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

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

0
user1286858

вы можете использовать команду UPDATE.

UPDATE table_name SET [email protected], [email protected], [email protected] WHERE [email protected]_id
0
Rj Raawat