Ich habe eine Abfrage, die mit einer Auswahl eingefügt wird:
INSERT INTO courses (name, location, gid)
SELECT name, location, gid
FROM courses
WHERE cid = $cid
Ist es möglich, nur "Name, Ort" für die Einfügung auszuwählen und gid auf etwas anderes in der Abfrage zu setzen?
mysql
sql
insert-select
Kyle
quelle
quelle
OUTPUT
Klausel , mit der Sie alles, was Sie eingefügt haben, auch in eine andere Tabelle einfügen können. Ich glaube nicht, dass MySQL ein Äquivalent hat. Sie können eine temporäre Tabelle erstellen , in diese Tabelle auswählen, danncourses
aus dieser Tabelle füllen und dann die temporäre Tabelle für alles verwenden, was Sie sonst noch benötigen.Ja, so ist es. Du kannst schreiben :
oder Sie können Werte von einem anderen Join der Auswahl erhalten ...
quelle
Richtige Syntax: Rechtschreibung auswählen war falsch
quelle
Klar, was willst du für das GID verwenden? ein statischer Wert, PHP var, ...
Ein statischer Wert von 1234 könnte sein wie folgt:
quelle
Ich denke, Ihre INSERT-Anweisung ist falsch, siehe korrekte Syntax: http://dev.mysql.com/doc/refman/5.1/en/insert.html
edit: wie Andrew schon betont hat ...
quelle
Natürlich kannst du.
Eines sollte jedoch beachtet werden: Die
INSERT INTO SELECT
Anweisung kopiert Daten aus einer Tabelle und fügt sie in eine andere Tabelle ein UND erfordert, dass die Datentypen in Quell- und Zieltabellen übereinstimmen. Wenn die Datentypen aus den angegebenen Tabellenspalten nicht übereinstimmen (dh versuchen, sieVARCHAR
inINT
oderTINYINT
in sie einzufügen) , löstINT
der MySQL-Server eine ausSQL Error (1366)
.Also sei vorsichtig.
Hier ist die Syntax des Befehls:
Randnotiz: Es gibt eine Möglichkeit, das Problem beim Einfügen verschiedener Spaltentypen zu umgehen, indem Sie Casting in Ihrem
SELECT
Beispiel verwenden:Diese Konvertierung (
CAST()
ist ein Synonym fürCONVERT()
) ist sehr nützlich, wenn Ihre Tabellen unterschiedliche Zeichensätze in derselben Tabellenspalte haben (was bei unsachgemäßer Behandlung möglicherweise zu Datenverlust führen kann).quelle
Die richtige Syntax für Ihre Abfrage lautet:
quelle