2010-02-26 2 views

ответ

9

Предполагая, что вы используете SQL Server:

insert into tableA 
    (val1, val2) 
select top 1 'value', tableB.x from tableB where tableB.Y = @y 
+1

+1: Избили меня к нему –

+0

Спасибо за редактирование форматирование и upvote :-) – ristonj

1

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

1

Вы близки:

INSERT INTO TableA(val1, val2) 
SELECT top 1 "value", X FROM TableB WHERE Y = @y 
1

другой, низший вариант, который меньше изменение кода: Определите промежуточное значение.

declare @scalarval int 
select @scalarval = tableB.X from tableB where [email protected] 
insert into TableA (val1,val2) 
values("value",@scalarval) 

Однако вставка в синтаксис более ясна.

+0

Неправильный синтаксис СВАО сверху ?? – user278618

+0

Я считаю, что вы правы; Я не верю, что вы можете сделать первый выбор в такой переменной. Может быть, выбрать топ 1? Исправлен запрос. – Broam

0
StringBuilder sb=new StringBuilder(); 
sb.Append("declare @id int select @id = top 1 TableB.id from TableB where [email protected] order by TableB.id desc insert into TableA(col1,col2,col3,col4) Values (@val1,@val2,@val3,@id)"); 

неправильный синтаксис вблизи верхней части.

Как это сделать?

// MSSQL сервер

Смежные вопросы