2015-09-07 143 views
0

我将250个项目插入到我的“贴纸”表中,并插入了大量声明。SQL Server - 错误的语法附近','

我得到每个 “选择” 此行我的错误插入过程中进入声明:

消息102,级别15,状态1,行19
附近有语法错误 ''。

Msg 102,Level 15,State 1,Line 21
','附近的语法不正确。

这里是我的INSERT语句发生问题:

INSERT INTO Stickers (Name, Category, Gender, Shop_ID, Url) 
    SELECT 
     ('Flow Dress', 'Dress', 'F', 1, 'https://mmimages.blob.core.windows.net/stickers/amazingfemaledress.png') 

    UNION ALL 

    SELECT 
     ('On Point', 'Facial Hair', 'M', 7, 'https://mmimages.blob.core.windows.net/stickers/bestfacehairever.png') 

这应该给你的Stickers表足够的信息:

CREATE TABLE [MirrorMirror].[dbo].[Stickers] 
(
    [Sticker_ID] int IDENTITY(1,1) PRIMARY KEY NOT NULL, 
    [Name] varchar(40) NOT NULL UNIQUE, 
    [Category] varchar(40) NOT NULL, 
    [Gender] char (1) NOT NULL, 
    [Url] varchar(300) NOT NULL, 

    [Shop_ID] int 
     FOREIGN KEY REFERENCES [dbo].[Shops](Shop_Id) NOT NULL 
) 

而且Shops表:

CREATE TABLE [MirrorMirror].[dbo].[Shops] 
(
    [Shop_ID] int IDENTITY(1,1) PRIMARY KEY NOT NULL, 
    [Name] varchar(40) NOT NULL UNIQUE 
); 

最后,这些店铺被插入Shops表之前的贴纸插入Sticker表(无误差):

INSERT INTO Shops (Name) 
     SELECT ('Glamour') 
     UNION ALL 
     SELECT ('Amber') 
     UNION ALL 
     SELECT('Nuvole Bianche') 
     UNION ALL 
     SELECT ('Cheapskate') 
     UNION ALL 
     SELECT ('North Shore') 
     UNION ALL 
     SELECT('Urban Style') 
     UNION ALL 
     SELECT('Fuzzy Beard Barbers') 
     UNION ALL 
     SELECT('Natural Beauty Salon'); 

为什么我收到的每个错误插入Stickers select语句?

编辑:我只是将Url列更改为varchar(300)60个字符是不够的。但是我仍然得到错误。

+3

你为什么把你的列放在'()'中? –

+1

是的,不要这样做。删除'()',这是你的语法错误。 – Blorgbeard

回答

1

删除括号:

INSERT INTO Stickers (Name, Category, Gender, Shop_ID, Url) 
    SELECT 'Flow Dress', 'Dress', 'F', 1, 'https://mmimages.blob.core.windows.net/stickers/amazingfemaledress.png' 
    UNION ALL 
    SELECT 'On Point', 'Facial Hair', 'M', 7, 'https://mmimages.blob.core.windows.net/stickers/bestfacehairever.png' 

或者,使用VALUES

INSERT INTO Stickers (Name, Category, Gender, Shop_ID, Url) 
    VALUES ('Flow Dress', 'Dress', 'F', 1, 'https://mmimages.blob.core.windows.net/stickers/amazingfemaledress.png'), 
      ('On Point', 'Facial Hair', 'M', 7, 'https://mmimages.blob.core.windows.net/stickers/bestfacehairever.png'); 

括号用于分组一个表达式,这就是为什么你在你的构造得到一个错误。