【问题标题】:Insert into from multiple tables从多个表中插入
【发布时间】:2012-11-18 09:06:55
【问题描述】:
Insert into po_header 
(Code,Date,Status,Month_Period,Year_Period,Created_Date,Created_User)

(Select PO_PR from Purchasing_Default Where Defaults = 'Default PO'),
GETDATE(),
'Saved',
(Select Details from Lookup Where Code ='Month_Period'),
(Select Details from Lookup Where Code ='Year_Period'),
GETDATE(),
''

返回错误:

消息 102,级别 15,状态 1,第 5 行 ',' 附近的语法不正确。 消息 102,第 15 级,状态 1,第 8 行 ',' 附近的语法不正确。 消息 102,第 15 级,状态 1,第 9 行 ',' 附近的语法不正确。

【问题讨论】:

  • 请提供完整的声明。

标签: sql-server-2008 sql-server-2005


【解决方案1】:

在列出的值之前添加 Select 语句

Insert into po_header 
(Code,Date,Status,Month_Period,Year_Period,Created_Date,Created_User)
Select (Select PO_PR from Purchasing_Default Where Defaults = 'Default PO'),
       GETDATE(),
       'Saved',
       (Select Details from Lookup Where Code ='Month_Period'),
       (Select Details from Lookup Where Code ='Year_Period'),
       GETDATE(),
       ''

【讨论】:

    【解决方案2】:

    您需要在尝试插入之前创建一个有效的数据集;您能否编写一个 SELECT 语句来返回您希望插入到目标表中的所有列和行?如果没有更好地了解您的表格和关系,就很难给您更具体的建议,但显然您正在尝试的内容是无效的。但是,类似:

    INSERT INTO TABLE (col1, col2, col3)
    SELECT a.col1, b.col2, b.col3
    FROM a JOIN b on a.ID = b.ID
    

    会起作用的。

    HTH。

    【讨论】:

    • 表之间没有关系
    【解决方案3】:

    我通过以下全局变量解决了它:声明@PO_PR varchar(50); 声明@Month_Details varchar(50); 声明@Year_Details varchar(50); 设置@PO_PR =(从 Purchasing_Default 中选择 PO_PR,其中 Defaults = 'Default PO'); 设置@Month_Details =(从代码='Month_Period'的查找中选择详细信息); Set @Year_Details = (Select Details from Lookup Where Code ='Year_Period');

    Insert into po_header (Code,Date,     
    [Status],Month_Period,Year_Period,Created_Date,Created_User)
    
    Values(
    @PO_PR,
    GETDATE(),
    'Saved',
    @Month_Details,
    @Year_Details,
    GETDATE(),
    '');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-11
      • 2016-06-19
      • 2019-07-26
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多