#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]