Mam dwie tabele hello
i login_table
a poniżej jest ich struktura
user_info
-------
some_id | name | address
login_table
-------
id | username | password
some_id
i id
są indeksami autoinkrementacji.
Teraz jak mogę korzystać INSERT
oświadczenie z INNER JOIN
w SQL
obecnie chcę dodać poniżej te same dane some_id
i id
`name` = John
`address` = wall street
`username` = john123
`password` = passw123
poniżej pokazy kodu, co próbowałem do tej pory.
insert into login_table lt
INNER JOIN user_info ui ON ui.some_id = lt.id
(ui.name, ui.address, lt.username, lt.password)
values
("John", "wall street", "john123", "passw123")
I to nie jest jedyna wartość, chcę dodać więcej niż jedną wartość na raz.
dzięki za pomoc.
Odpowiedzi:
10 dla odpowiedzi № 1Jeśli chcesz wykonać dwa INSERT
operacje atomowo, użyj transakcji:
START TRANSACTION;
INSERT INTO login_table (username, password) VALUES ("john123", "passw123");
INSERT INTO user_info (name, address) VALUES ("John", "wall street");
COMMIT;
N.B. Twój silnik pamięci masowej musi obsługiwać transakcje, aby działał (np. InnoDB
).
Aby wstawić wiele wartości jednocześnie do tabeli, użyj formularza wielu wierszy INSERT
. Jak stwierdzono w instrukcja:
INSERT
używane instrukcjeVALUES
składnia może wstawiać wiele wierszy. Aby to zrobić, dołącz wiele list wartości kolumn, z których każda jest zamknięta w nawiasie i oddzielona przecinkami. Przykład:WŁÓŻ W nazwa_tabeli</ em> (a, b, c) WARTOŚCI (1,2,3), (4,5,6), (7,8,9);Lista wartości dla każdego wiersza musi być zamknięta w nawiasach. Poniższa instrukcja jest niedozwolona, ponieważ liczba wartości na liście nie odpowiada liczbie nazw kolumn:
WŁÓŻ W nazwa_tabeli</ em> (a, b, c) WARTOŚCI (1,2,3,4,5,6,7,8,9);
VALUE
jest synonimemVALUES
w tym kontekście. Ani nie implikuje niczego o liczbie list wartości i może być używany niezależnie od tego, czy istnieje lista pojedynczych wartości, czy wiele list.
0 dla odpowiedzi nr 2
Wstawianie do dwóch tabel jest niemożliwe. Druga część pytania jest możliwa: możesz wstawić wiele wierszy w jednym wyrażeniu:
insert into some_table(col1, col2) values (1,2), (3,4), (5,6);