J'ai une requête qui insère en utilisant un select:
INSERT INTO courses (name, location, gid)
SELECT name, location, gid
FROM courses
WHERE cid = $cid
Est-il possible de sélectionner uniquement "nom, emplacement" pour l'insertion et de définir gid sur autre chose dans la requête?
mysql
sql
insert-select
Kyle
la source
la source
OUTPUT
clause , qui vous permet également de mettre ce que vous avez inséré dans une autre table. Je ne pense pas que MySQL ait un équivalent. Vous pouvez créer une table temporaire , sélectionner dans cette table, puis remplir àcourses
partir de cette table, puis utiliser la table temporaire pour tout ce dont vous avez besoin.Oui, ça l'est. Tu peux écrire :
ou vous pouvez obtenir des valeurs d'une autre jointure de la sélection ...
la source
Syntaxe correcte: l'orthographe sélectionnée était incorrecte
la source
Bien sûr, que voulez-vous utiliser pour le gid? une valeur statique, PHP var, ...
Une valeur statique de 1234 pourrait ressembler à:
la source
Je pense que votre instruction INSERT est incorrecte, voir la syntaxe correcte: http://dev.mysql.com/doc/refman/5.1/en/insert.html
edit: comme Andrew l'a déjà souligné ...
la source
Bien sûr vous pouvez.
Il convient toutefois de noter une chose: l'
INSERT INTO SELECT
instruction copie les données d'une table et les insère dans une autre table ET requiert que les types de données des tables source et cible correspondent. Si les types de données des colonnes de table données ne correspondent pas (c'est-à-dire en essayant de les insérerVARCHAR
dansINT
ouTINYINT
dansINT
) le serveur MySQL lancera unSQL Error (1366)
.Donc sois prudent.
Voici la syntaxe de la commande:
Note latérale: Il existe un moyen de contourner le problème d'insertion de différents types de colonnes en utilisant la conversion dans votre
SELECT
, par exemple:Cette conversion (
CAST()
synonyme deCONVERT()
) est très utile si vos tables ont des jeux de caractères différents sur la même colonne de table (ce qui peut potentiellement entraîner une perte de données si elles ne sont pas gérées correctement).la source
La bonne syntaxe pour votre requête est:
la source