2012-05-26 5 views
2

В настоящее время с использованием базы данных MySQLSQL INSERT INTO выберите

Хотеть, чтобы вставить новую строку в table (t_2) для каждого подходящего входа в моем где состояние другого table (t_1).

Я также хочу включить значение счетчика из отдельной таблицы для каждой записи (счетчик из счетчика таблицы) и строковое значение «уменьшение» для каждой записи. Не знаю, как поставить это через, это не то, что я до сих пор:

INSERT INTO t_2(count,id,val='decrease') 
SELECT MAX(count) as count FROM counter 
SELECT id FROM t_1 WHERE val < 0 

ошибка я получаю:

1064 - У Вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «=» уменьшение «) SELECT COUNT FROM счетчика Выберите идентификатор из Т_1 Допустимы < 0» в строке 1

Я знаю, что я вероятно, не должен иметь val='decrease', но просто хотел проиллюстрировать, что я хочу, чтобы это было строковое значение, вставленное для каждой новой строки.

+3

Downvoters позаботится объяснить? – eggyal

+0

Я хотел бы задать то же самое – Gary

ответ

3

Попробуйте это:

INSERT INTO t_2 (count,id,val) 
SELECT 
    (SELECT MAX(count) FROM counter), 
    t1.id, 
    'decrease' 
FROM t_1 
WHERE val < 0, 
+0

Если бы я хотел добавить поле к строковому значению, могу ли я просто конкатенировать его, как обычно? Например: '('уменьшение' + t_1.detail) как val' – elzaer

+0

@elzaer: вы должны использовать [CONCAT ('уменьшение', t_1.detail)] (http://dev.mysql.com/doc/refman /5.5/en/string-functions.html#function_concat) – Marco

3

Это то, что вы ищете?

INSERT INTO t_2(count,id,val) 
    SELECT (SELECT MAX(count) as count FROM counter) as count, id, 'decrease' as val 
    FROM t_1 
    WHERE val < 0