SQL Server 为什么在尝试向表中插入行时出现此错误?

dw1jzc5e  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(149)

我有一个名为dbo.scannerCatalog的表格,其中包含以下列:
扫描程序ID、扫描程序名称、扫描程序用户、扫描程序强度、国家/地区ID
另一个表dbo.scannerCoordinates包含以下列:
扫描仪ID、锁定代码、Z轴、RAXIS、坐标ID

dbo. scanner坐标数据如下所示:

| 扫描器ID|锁码|Z轴|拉克西斯|坐标ID|
| - ------|- ------|- ------|- ------|- ------|
| 1个|akhr199| -43岁|九十五|238 c9023 - 0 e5 c-4 b63-b7 f0 - 99861 b 0 bf 551型号|
| 第二章|JTUW212|二十二|-20个|2d 2afe 30 - 15 fd-4168- 8a 55-b 98 a3 b2 dcd 39型柴油机|
| 三个|酪氨酸酶931|九零一|七六一|编号:93 eaa 24 - 038 d-4d 46 - 93 d 6-编号:72305242|
| 四个|mriq762| -71人|-9|一个3326 d 0 b-2cb 3 - 48 cd-82 ac-59658 fa 5e 9 e8|
我需要从下面的查询中插入数据,该查询显示了scannerCatalogcountryID为“gh 3”但不在scannerCoordinates中的行:

SELECT * FROM scannerCatalog WHERE scannerID
NOT IN (    SELECT sc.scannerID FROM dbo.scannerCoordinates scanCoord
    LEFT JOIN scannerCatalog sc ON scanCoord.scannerID= sc.scannerID
    WHERE countryID = 'gh3')
AND countryID = 'gh3'

是否有一种方法可以使用上面查询中的数据对dbo.scannerCoordinates执行INSERT操作?
我试过这个:

INSERT INTO dbo.scannerCoordinates
WHERE scannerID IN(
SELECT * FROM scannerCatalog WHERE scannerID
NOT IN (    SELECT sc.scannerID FROM dbo.scannerCoordinates scanCoord
    LEFT JOIN scannerCatalog sc ON scanCoord.scannerID= sc.scannerID
    WHERE countryID = 'gh3')
AND countryID = 'gh3'

但得到这个错误:
关键字“WHERE”附近的语法不正确。

qoefvg9y

qoefvg9y1#

您只是缺少SELECT * FROM dbo.scannerCoordinates
下面应该可以。

INSERT INTO dbo.scannerCatalog
            SELECT  *
            FROM    dbo.scannerCatalog
            WHERE   scannerID NOT IN
                        (   SELECT      sc.scannerID
                            FROM        dbo.scannerCoordinates scanCoord
                            LEFT JOIN   scannerCatalog         sc ON
                                        scanCoord.scannerID = sc.scannerID
                            WHERE       countryID = 'gh3' )
                    AND countryID = 'gh3';

相关问题