Попробуйте:
INSERT INTO my_test_one
(rollno, name, sirname, Dept)
SELECT rollno_seq.nextval,
name1,
sirname1,
dept
FROM (select 'name1' as name1,'sirname1' as sirname1, Dept
FROM my_test_one_backup
WHERE dept = 500
UNION ALL
select 'name1','sirname1', Dept
FROM my_test_one_backup
WHERE dept = 501 );
Edit: еще лучше, используйте OR
, как говорит CodeBrickie или и IN
оператор.
WHERE dept IN (500, 501);
Редактировать2:
В настоящее время вы выбираете «name1», «sirname1» в качестве литералов, поэтому в каждой возвращаемой строке будет вставлен следующий порядковый номер, «name1», «sirname1» и любое значение столбца DEPT.
Если в вашей таблице есть столбцы с именами name1 и sirname1, вам нужно удалить одинарные кавычки (и вам также не понадобится псевдоним столбца), например ::
INSERT INTO my_test_one
(rollno, name, sirname, Dept)
SELECT rollno_seq.nextval,
name1,
sirname1,
dept
FROM (select name1, sirname1, Dept
FROM my_test_one_backup
WHERE dept = 500
UNION ALL
select name1, sirname1, Dept
FROM my_test_one_backup
WHERE dept = 501 );
Или
INSERT INTO my_test_one
(rollno, name, sirname, Dept)
SELECT rollno_seq.nextval,
name1,
sirname1,
dept
FROM my_test_one_backup
WHERE dept IN (500, 501);