2010-06-02 11 views
2

Je suis un peu nouveau dans les fonctions d'union de mySQL: s, au moins lorsque vous faites des insertions avec eux. J'ai obtenu ce qui suit à travailler sur un exemple trouvé sur le net:Requête mySQL: Comment insérer avec UNION?

INSERT INTO tableOne(a, b) 
SELECT a, $var FROM tableOne 
WHERE b = $var2 
UNION ALL SELECT $var,$var 

Ok, rien d'étrange à ce sujet. Mais que se passe-t-il lorsque je veux insérer une troisième valeur dans la base de données qui n'a rien à voir avec la logique du Select en cours?

Comme: INSERT INTO tableOne(a, b, c)

Comment pourrait-il être fait?

Répondre

8

Vous pouvez "sélectionner" les valeurs littérales aussi:

mysql> select 'hello', 1; 
+-------+---+ 
| hello | 1 | 
+-------+---+ 
| hello | 1 | 
+-------+---+ 
1 row in set (0.00 sec) 

Par conséquent, vous pouvez également l'utiliser dans INSERT INTO ... SELECT FROM et UNION s.

INSERT INTO someTable (a, b, c) VALUES 
SELECT id, name, 5 
FROM someOtherTable 
UNION 
SELECT id, alias, 8 
FROM anotherTable 
+2

Au moins pour sqlite3, il semble qu'il ne devrait pas y avoir de "VALUES" dans ce cas. Voir http://www.sqlite.org/lang_insert.html. –