“查询输入必须至少包含一个表或查询”添加“INSERT INTO”语句时出错

问题描述 投票:0回答:1

Expr1找到行中的最大数字,我想将其存储在“max num”字段中。

SELECT [impact test].num1, [impact test].num2, [impact test].num3, [impact test].[max num], 

IIf([num1]>[num2] And [num1]>[num3],[num1],
   IIf([num2]>[num1] And [num2]>[num3],[num2],
      IIf([num3]>[num1] And [num3]>[num2],[num3],"Error"))) AS Expr1, 

INSERT INTO [impact test] ([max num]) VALUES (Expr1) 

FROM [impact test];

“查询输入必须包含至少一个表或查询”错误突出显示“(”在开始声明列存储值时。我尝试了几种不同的方式,例如

INSERT INTO [impact test].[max num] VALUES (Expr1)
INSERT INTO [impact test] (max num) VALUES (Expr1)
INSERT INTO [impact test].[max num] ([max num]) VALUES (Expr1)
INSERT INTO [impact test].[max num] (max num) VALUES (Expr1)

但是这些都没有。任何帮助是极大的赞赏。

编辑样本数据和所需结果:

num1   num2   num3   [max num]
 2      5      1         5
 3      4      6         6
 7      3      4         7

我只想存储[max num]字段中每行的最高编号。我尝试查找其他方法,但它们只有最大列,而不是行。

sql ms-access insert-into
1个回答
1
投票

我想你想要一个update而且没有聚合函数:

UPDATE [impact test] 
    SET [max num] = IIf([num1] > [num2] And [num1] > [num3], [num1],
                        IIf([num2] > [num1] And [num2] > [num3], [num2],
                            IIf([num3] > [num1] And [num3] > [num2], [num3], "Error")
                           )
                      );

您可以将逻辑简化为:

UPDATE [impact test] 
    SET [max num] = SWITCH([num1] > [num2] And [num1] > [num3], [num1],
                           [num2] > [num3], [num2],
                           [num3]
                          );

我不认为"Error"值有助于任何事情。它只会导致类型混乱。

© www.soinside.com 2019 - 2024. All rights reserved.