Mam zapytanie, które wstawia za pomocą select:
INSERT INTO courses (name, location, gid)
SELECT name, location, gid
FROM courses
WHERE cid = $cid
Czy można wybrać tylko „nazwę, lokalizację” dla wstawki i ustawić gid na coś innego w zapytaniu?
mysql
sql
insert-select
Kyle
źródło
źródło
OUTPUT
klauzulę , która pozwala ci umieścić wszystko, co wstawiłeś, również w innej tabeli. Nie sądzę, że MySQL ma odpowiednik. Możesz utworzyć tabelę tymczasową , wybrać tę tabelę, a następnie wypełnićcourses
tę tabelę, a następnie użyć tabeli tymczasowej do wszystkiego, czego potrzebujesz.Tak to jest. Możesz pisać :
lub możesz uzyskać wartości z innego połączenia wybranego ...
źródło
Prawidłowa składnia: wybrana pisownia była niepoprawna
źródło
Jasne, czego chcesz użyć do GID? wartość statyczna, PHP var, ...
Wartość statyczna 1234 może być następująca:
źródło
Myślę, że twoja instrukcja INSERT jest niepoprawna, zobacz poprawną składnię: http://dev.mysql.com/doc/refman/5.1/en/insert.html
edytuj: jak już zauważył Andrew ...
źródło
Oczywiście, że możesz.
Należy jednak zauważyć jedną rzecz:
INSERT INTO SELECT
instrukcja kopiuje dane z jednej tabeli i wstawia ją do innej tabeli ORAZ wymaga, aby typy danych w tabelach źródłowej i docelowej były zgodne. Jeśli typy danych z podanych kolumn tabeli nie pasują (tj. Próbują wstawićVARCHAR
doINT
lubTINYINT
doINT
) serwer MySQL wyrzuciSQL Error (1366)
.Więc uważaj.
Oto składnia polecenia:
Uwaga dodatkowa: Istnieje sposób na obejście problemu wstawiania różnych typów kolumn za pomocą rzutowania w twoim
SELECT
, na przykład:Ta konwersja (
CAST()
jest synonimemCONVERT()
) jest bardzo przydatna, jeśli tabele mają różne zestawy znaków w tej samej kolumnie tabeli (co może potencjalnie prowadzić do utraty danych, jeśli nie będzie właściwie obsługiwane).źródło
Odpowiednia składnia dla twojego zapytania to:
źródło