MSSQL Select 个要插入的表

MSSQL Select more Tables to INSERT

我正在为这段代码苦苦挣扎:

INSERT INTO Bier(Bier, BrowuerID, TypeID, GistingID, KleurID, Alcohol)
SELECT bb.Naam, b.BrouwerID, t.TypeID, g.GistingID, k.KleurID, bb.Alcoholperc
FROM BELGISCHBIER AS bb JOIN Brouwer AS b JOIN Type AS t JOIN Gisting AS g JOIN Kleur AS k

谁能告诉我为什么这行不通,因为我对 SQL

了解不多

谢谢。

JOIN、SQL理解INNER JOIN。强制使用 ON 子句也是如此。

只有使用CROSS JOIN才能不写ON子句

因此,在您的 JOIN 命令中添加 ON 子句。

您的代码有一些语法错误,您在 Join 操作中遗漏了 On 子句

试试这样想,

INSERT INTO Bier(Bier, BrowuerID, TypeID, GistingID, KleurID, Alcohol)
SELECT bb.Naam, b.BrouwerID, t.TypeID, g.GistingID, k.KleurID, bb.Alcoholperc
FROM BELGISCHBIER AS bb <on Clause>JOIN Brouwer  AS b  <on Clause> JOIN Type on  AS t <on Clause> JOIN Gisting AS g  <on Clause>  JOIN  Kleur AS k  <on Clause>

或者你可以简单地使用 Cross Join,它不需要 On 子句。

语法:

SELECT * 
FROM table1 
CROSS JOIN table2;

示例:

INSERT INTO Bier
            (Bier,BrowuerID,TypeID,GistingID,
             KleurID,Alcohol)
SELECT bb.Naam,b.BrouwerID,t.TypeID,g.GistingID,
       k.KleurID,bb.Alcoholperc
FROM   BELGISCHBIER AS bb
       CROSS JOIN Brouwer AS b
       CROSS JOIN Type AS t
       CROSS JOIN Gisting AS g
       CROSS JOIN Kleur AS k 

如果表之间没有公共列,请使用 Cross Join,否则如其他人所述,您需要使用 ON 条件来连接两个表

INSERT INTO Bier
            (Bier,BrowuerID,TypeID,GistingID,
             KleurID,Alcohol)
SELECT bb.Naam,b.BrouwerID,t.TypeID,g.GistingID,
       k.KleurID,bb.Alcoholperc
FROM   BELGISCHBIER AS bb
       CROSS JOIN Brouwer AS b
       CROSS JOIN Type AS t
       CROSS JOIN Gisting AS g
       CROSS JOIN Kleur AS k 

您使用的 JOINS 没有强制性的 ON 子句,该子句决定了应该在哪些列上连接表:

INSERT INTO bier 
            ( 
                        bier, 
                        browuerid, 
                        typeid, 
                        gistingid, 
                        kleurid, 
                        alcohol 
            ) 
SELECT bb.naam, 
       b.brouwerid, 
       t.typeid, 
       g.gistingid, 
       k.kleurid, 
       bb.alcoholperc 
FROM   belgischbier AS bb 
JOIN   brouwer      AS b 
    ON bb.browuerid= b.browuerid
JOIN   type         AS t 
    ON b.BrouwerTypeID = t.BrouwerTypeID
JOIN   gisting      AS g 
    ON bb.GistingID = g.GistingID
JOIN   kleur        AS k
    ON g.KleurID = k.KleurID