2010-06-02 6 views
2

Я как бы новичок в функциях mySQL: s union, по крайней мере, при выполнении вставок с ними. Я получил следующее, чтобы работать по примеру, найденному в сети:mySQL-запрос: как вставить с UNION?

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

Хорошо, ничего странного в этом нет. Но что происходит, когда я хочу вставить третье значение в базу данных, не имеющую ничего общего с логикой выбора «Сделано»?

Как: INSERT INTO tableOne(a, b, c)

Как это может быть сделано?

ответ

8

Вы можете "выбрать" буквенные значения тоже:

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

Таким образом, вы можете также использовать его в INSERT INTO ... SELECT FROM и UNION с.

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

По крайней мере, для sqlite3 кажется, что в этом случае не должно быть «VALUES». См. Http://www.sqlite.org/lang_insert.html. –