【问题标题】:SQL Server Insert Command ErrorSQL Server 插入命令错误
【发布时间】:2013-07-10 16:25:54
【问题描述】:
INSERT INTO BORCODEME 
  ( BORCODEME.IslemTarihi, BORCODEME.IslemAciklamasi,BORCODEME.IslemTutari) 
VALUES( 
  (SELECT BORCLAR.BorcTarih,BORCLAR.BorcAciklama,BORCLAR.BorcTutari FROM BORCLAR WHERE BORCLAR.BorcMusteriID=6),
  (SELECT ODEMELER.OdemeTarihi,ODEMELER.OdemeAciklama,ODEMELER.OdemeTutar FROM ODEMELER WHERE ODEMELER.OdemeMusteriID=6)
  )

我的 SQL 命令是这样的,我有这些错误;

消息 116,第 16 级,状态 1,第 4 行
当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。
消息 116,第 16 级,状态 1,第 6 行
当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。
消息 109,第 15 级,状态 1,第 1 行
INSERT 语句中的列多于 VALUES 子句中指定的值。 VALUES 子句中的值数必须与 INSERT 语句中指定的列数匹配。

【问题讨论】:

  • 您在每个应该为 single 列提供值的子选择中选择多个列。

标签: sql-server insert exists


【解决方案1】:

不确定您真正要查找的内容 - 您是否要插入两个表中的三列?然后像这样写你的INSERT

INSERT INTO BORCODEME(IslemTarihi, IslemAciklamasi, IslemTutari) 
   SELECT 
       BORCLAR.BorcTarih, BORCLAR.BorcAciklama, BORCLAR.BorcTutari 
   FROM 
       BORCLAR 
   WHERE 
       BORCLAR.BorcMusteriID = 6 

   UNION

   SELECT 
       ODEMELER.OdemeTarihi, ODEMELER.OdemeAciklama, ODEMELER.OdemeTutar 
   FROM 
       ODEMELER 
   WHERE 
       ODEMELER.OdemeMusteriID = 6

因此这将插入来自BORCLAR 的三个值以及来自ODEMELER 的三个值的另一行。

如果这不是你想要的,那么你需要更详细地解释你真正想要的是什么.....

一般来说,您可以任一使用以下语法:

INSERT INTO dbo.TargetTable (List-of-Columns)
VALUES (List-of-atomic-values)

如果您不能提供原子值(文字或 T-SQL 变量),那么您可以使用

INSERT INTO dbo.TargetTable (List-of-Columns)
   SELECT list-of-columns
   FROM dbo.SourceTable

但你不能混合 - 你不能有VALUES,然后在里面使用SELECT

在这两种情况下,INSERT 语句中的列数必须与 @ 中提供的原子值的数量完全匹配 987654330@ 或SELECT 语句选择的列数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 2016-12-14
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多