【问题标题】:How to copy some data from one table to another?如何将一些数据从一个表复制到另一个?
【发布时间】:2013-05-30 09:36:44
【问题描述】:

我有两个表ProductsNotArrivedOrders(所有列都是nvarchar(50))。

现在在产品中我有这个专栏:

  1. 产品名称。
  2. 产品价格。
  3. 产品数量。

在 NotArrivedOrder 我有这个:

  1. 订单编号
  2. 产品名称
  3. 产品价格
  4. 产品数量
  5. 到达日期

我想在产品中插入所有到达的订单(今天的日期比到达的日期大)。

我该怎么做? (有一个复制查询或类似的东西)。

我试过这个:

INSERT INTO Products 
values(Select ProductName,ProductPrice,ProductAmount FROM NotArrivedOrder Where ArriveDate ='30/05/2013')"

我收到了这个错误:

“选择”键附近的语法不正确
')' 附近的语法不正确。
将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。

【问题讨论】:

  • 您使用的是哪个 RDBMS? SQL 服务器? MySQL?甲骨文?
  • 你懂SQL语言吗?您可以编写要用于数据提取的 SELECT 查询和要用于数据插入的 INSERT 查询吗?一旦你有了这两个 SQL 语句,我们就可以将它们组合在一起
  • 1 我正在使用 SQL 服务器 2 我尝试过类似的东西,但没有用。 3 到货日期是 30/05/2013
  • @ShmulikCohen 你不需要 values 关键字......像我在回答中建议的那样尝试......
  • 您需要要么使用INSERT INTO Products(list of columns) VALUES(explicit values),或者然后使用INSERT INTO Products(list of columns) SELECT (list of columns) FROM ......。您不能混合使用 VALUESSELECT 方法。另外:我强烈建议始终在您的 INSERT INTO .... 语句中定义一个明确的列列表 - 只是为了安全

标签: c# sql sql-server winforms


【解决方案1】:

请试试这个..

INSERT INTO PRODUCT 
SELECT ProductName, ProductPrice, ProductAmount 
FROM NotArrivedOrder 
WHERE ArriveDate<CONVERT(nvarchar(50),GetDate())

【讨论】:

    【解决方案2】:

    查询:

    insert into Product 
    values(select productname,ProductPrice,ProductAmount 
           from NotArrived order 
           where ArriveDate<GetDate())
    

    C# 代码:

        try
        {
        con.open();
        cmd=new sqlcommand("insert into Product values(select productname,ProductPrice,ProductAmount from NotArrived order where ArriveDate<GetDate())",conn);
        cmd.executenonquery();
        con.close();
        }
        catch(exception ex)
        {
        }
        finally
        {
         con.close();
        }
    

    【讨论】:

    • 即时串,我得到这个错误 | " 关键字附近的语法不正确 Select Incorrect Syntax Near ')'
    • 是的,它是。你觉得我能做什么?
    • 您使用的是 sqlserver 2008 还是 2005?
    • 我知道版本是'10.00.2531' 我不知道是2008还是2005
    【解决方案3】:

    试试这样......

     Insert Into Product(ProductName,
        ProductPrice,
        ProductAmount)  (Select ProductName,
        ProductPrice,
        ProductAmount
        from NotArrivedOrder  where Casr(ArriveDate as Datetime)< GetDate())
    

    【讨论】:

    • @ShmulikCohen Ccheck 在这里它可以像这样工作文件 ..sqlfiddle.com/#!3/c91a0/1
    • @ShmulikCohen @AmitSingh 那是insert into (...) values (...)(我想;我可能错了)。
    • @michaelb958 它不需要值关键字检查 sql fiddle 在评论中效果很好
    • 在这种情况下,SQLfiddle 和 OP 可能使用不同的数据库(同样,也许)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2012-01-07
    相关资源
    最近更新 更多