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语句中指定的列数相匹配。
答案 0 :(得分: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
因此,这将插入来自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
语句 中的列数必须与 完全匹配,并提供原子值的数量在VALUES
中或SELECT
语句