SQL VB.net вставка с использованием select И значений

#sql #vb.net #tsql

#sql #vb.net #tsql

Вопрос:

Новичок в использовании SQL, и у меня возникли проблемы с выполнением чего-то, что, как я полагал, было бы простым.

Я пытаюсь создать и вставить, которые будут вставлять значение MAX () из первого столбца в одной таблице в первый столбец в другой таблице, в то время как остальные столбцы будут заполнены параметрами.

Я попытался переключить свой код, чтобы посмотреть, не ошибся ли я в синтаксисе, но мне не повезло, и я даже не уверен, что то, что я пытаюсь сделать, возможно (по крайней мере, в одной ВСТАВКЕ).

Вот что у меня есть на данный момент:

 INSERT INTO [Table2] VALUES(SELECT(Number FROM [Table1] WHERE Max(Number)), @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)
  

Комментарии:

1. попробуйте сначала создать скрипт в Sql Server Management Studio (SSMS), а затем внедрить его в свой код.

Ответ №1:

инструкция select должна быть заключена в круглые скобки, и я рекомендую вам всегда помещать список столбцов в инструкцию insert

 Insert into [MyTable] (Max,Value1,Value2,Value3) values((select Max(Number) from Table1),@p1,@p2,@p3)
  

Комментарии:

1. Ах, чертовы круглые скобки. Спасибо за вашу помощь, это сработало отлично.

Ответ №2:

Во-первых: оператор SELECT MAX неверен, правильный синтаксис:

 SELECT Max(Number) From [Table1]
  

Второе: синтаксис INSERT неверен. Чтобы использовать подзапрос, вы должны выбрать значения для каждого поля в целевой таблице, в то время как при использовании ключевого слова VALUES вам нужно указать поле для вставки значения.

Итак, ваш запрос должен стать чем-то вроде этого:

 INSERT INTO [Table2] 
SELECT Max(Number), @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10 From [Table1]
  

ИЛИ (я использую меньший параметр по практическим соображениям)

 INSERT INTO [Table2] (field1,field2,field3)
VALUES
(@MAX, @p1, @p2)
  

где @MAX — переменная, содержащая результат

 SELECT Max(Number) From [Table1]