2012-10-18 8 views
10

Próbowałem googling tego problemu ale tylko dowiedzieć, jak to zrobić za pomocą dwóch tabel, w następujący sposób,MySQL bezpośredni INSERT INTO z 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.) 
     ) 

To działało na jednym scenariuszu, ale teraz moje zainteresowanie jest przesłać dane bezpośrednio z samego programu bez użycia dwóch tabel. Chcę tylko przesłać dane, których nie ma w tabeli. SQL miałem w głowie było jak poniżej,

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

Ale to źle .. może wiem właściwy sposób robi to proszę, dziękuję bardzo :)

+1

W oparciu o SQL, który miałeś na myśli, wygląda na to, że chcesz wstawić wiersz do tabeli, jeśli jeszcze nie istnieje. Jeśli tak, proszę spojrzeć na to pytanie/odpowiedź. http://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in-mysql – qsheets

+0

Wyświetl to pytanie. To może pomóc. http://stackoverflow.com/questions/2930378/mysql-replace-into-alternative – Dev

+0

yeaaa thats exaclty było moje potrzeby il sprawdzić na te .. dziękuję bardzo za odpowiedzi :) –

Odpowiedz

14

INSERT składnia nie może mieć WHERE klauzula. Jedyną sytuacją, gdy znajdziesz INSERT, jest klauzula WHERE, gdy używasz instrukcji INSERT INTO...SELECT.

Pierwsza składnia jest już poprawna.

+0

okey dziękuję, źle spróbuj optymalizacji pierwsze zapytanie o moje potrzeby :) –

+0

tak, jak głupi ode mnie wystarczy, aby zadzwonić do tej samej tabeli w kwerendzie wybierz i dopasuj ją do wartości, które chciałem .. :) dzięki dużo :) –

+0

hehe, nie ma za co! –

-3

INSERT INTO
wkładki do rachunku można wstawić nowy wiersz w tabeli.
SQL INSERT INTO Składnia

Jest możliwe, aby napisać INSERT INTO w dwóch formach.

Pierwsza forma nie określa nazwy kolumn, gdzie zostaną wstawione dane, tylko ich wartości:

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

Druga forma określa zarówno nazwy kolumn i wartości w brzmieniu:

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

dziękuję za odpowiedź, ale chciałem wykonać warunkowe oświadczenie "INSERT INTO" :) –

1

Przykład wykonania INSERT INTO SELECT z klauzulą ​​WHERE.

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

Edytuj swój post i wyjaśnij odpowiedź. –

+0

Wyjaśnia się. To jest przykład, który pokazuje, że możesz INSERT INTO z klauzulą ​​WHERE. to naprawdę prosty przykład, w którym każdy powinien być w stanie pojąć koncepcję. – Pomster

+0

Głosowanie w dół nie jest moje, zamiast tego lubię komentować. Jak widzisz, inni się nie zgadzają.Znalazłem Twój wpis w niskiej jakości postach, więc sugerowałem, żebyś go ulepszył. –

0

Jeśli rozumiem celem jest, aby wstawić nowy rekord do tabeli, ale jeśli dane są już na stole: pominąć! Oto moja odpowiedź:

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 

Rekord do wstawienia znajduje się w polach nowej wartości.