1
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 命令是这样的,我有这些错误;

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

4

1 回答 1

2

不确定您真正要查找的内容 - 您是否尝试从两个表中插入三列?然后这样写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

因此,这将插入三个值 fromBORCLAR和另一行,其中三个值来自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在里面使用)

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

于 2013-07-10T16:30:59.993 回答