2016-12-14 3 views
-1

Есть несколько записейВставка записей SQL

Например:

ID Name subject cindex 
    1 abc mat  45 
    2 jjj scie  45 
    3 kkk geom  45 
    4 sdf eng  45 
    5 idf law  45 

Теперь я хочу, чтобы вставить ту же запись, но с разными cindex. Я попытался это:

insert into b_table (ID,name,subject,cindex) values (+1,NULL,NULL,90) 
select name,subject from b_table where cindex=45 

Здесь ID не столбец автоинкремент. Я пытался сделать +1. Теперь я думаю, что этот запрос неверен, поэтому как выбрать записи и вставить те же записи с разными cindex?

+0

Если у вас уже есть 1, 2, 3, а затем добавить 1, вставка попытается вставить 2, 3, 4. I.e. дублировать значения id! – jarlh

+0

сообщите нам об ошибке, которую вы получаете –

+0

Не хотите вставлять с разными cindex и, очевидно, разными ID .. –

ответ

1

Имейте подзапрос, который возвращает максимальный id таблицы. Добавьте это значение в каждый выбранный идентификатор.

insert into b_table (ID,name,subject,cindex) 
    select id + (select max(id) from b_table), Name, subject, 90 
    from b_table where cindex = 45 
+0

сложно:/.. я не понял, почему вы выбираете 90 как cindex из таблицы, потому что нет записи с cindex 90 в таблице? –

+0

Вы не хотите вставлять cindex 90 вместо 45? – jarlh

+0

Да, нужно вставить это 90 вместо 45. @ Jarih –

1

Не вставляйте ничего ID столбца, если это автоинкремент, используйте:

insert into b_table (id,name,subject,cindex) 
select (SELECT max(id) FROM b_table) + id,name,subject,90 from b_table where cindex=45 

EDIT: Для выяснения вопроса вы спросили в комментариях, возьмите эту таблицу, например:

ID, NAME 
1 super 
2 sagi 
3 josh 

SELECT id, name , 'bla bla bla' as constant_string, 45 constant_number 
FROM Table 

выведет следующее:

ID,name,constant_string,constant_number 
1 super 'bla bla bla' 45 
2 sagi  'bla bla bla' 45 
3 josh  'bla bla bla' 45 

Когда вы выбираете строку или номер, они не выбираются из фактических данных таблицы. Они генерируются как постоянное значение, «привязанное» к вашим данным.

+0

«ID не автоинкремент». – jarlh

+0

По какой-то причине я прочитал его как «ID - автоинкремент» :) @jarlh – sagi

+0

, но в таблице нет 90 cindex, так как я выбираю 90? –