2016-03-04 88 views
-2

我试图插入KeywordSearchResults表中。我在尝试插入SearchResults表时遇到错误。我在插入语句时出错

Declare @UrlList SearchResultList READONLY 
declare @KeywordID int 

insert into Keyword(Keyword,Domain_ID,RunDate)values(@Keyword,@Domain_ID,@RunDate) 
set @KeywordID=IDENT_CURRENT('Keyword') 


insert into SearchResults(SearchedURL,Keyword_ID,IsClient) 
select (select SearchedURL from @UrlList),@KeywordID as Keyword_ID,1 as IsClient 

我收到了下面给出的错误。

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。 该声明已被终止。

<table><tbody><tr><th>SearchedURL_ID</th><th>SearchedURL</th><th>Keyword_ID</th><th>IsClient</th></tr><tr><td>8</td><td>http://www.revanadigital.com/</td><td>8</td><td>NULL</td></tr><tr><td>9</td><td>http://www.zoominfo.com/c/WebMetro-Inc/41713725</td><td>8</td><td>NULL</td></tr><tr><td>10</td><td>http://www.revanadigital.com/who-we-are/careers/</td><td>8</td><td>NULL</td></tr><tr><td>11</td><td>https://www.glassdoor.com/Reviews/WebMetro-California-Reviews-E259626.htm</td><td>8</td><td>NULL</td></tr><tr><td>12</td><td>http://www.yelp.com/biz/webmetro-san-dimas</td><td>8</td><td>NULL</td></tr><tr><td>13</td><td>https://www.crunchbase.com/organization/webmetro</td><td>8</td><td>NULL</td></tr></tbody></table>

+0

错误信息显示:'(选择SearchedURL ..'应该返回一个值,不能在该列中插入一个值列表 –

+0

你能建议如何插入多个值吗? –

+2

你已经有两个答案,全部源代码插入_multiple values_。或者这不是你想要的,你的目标是将'@ urllist'中的所有url链接成一个字符串? –

回答

2

与获得@keywordid,那么你需要这个:

insert into SearchResults(SearchedURL,Keyword_ID,IsClient) 
select SearchedURL,@KeywordID as Keyword_ID,1 as IsClient 
from @UrlList 

如果不是那么你必须修改(select SearchedURL from @UrlList)子查询,以确保它只返回一行。添加TOP 1ORDER BY或类似的东西。

2

你的第二个插入查询应该是这样的 -

INSERT INTO SearchResults (SearchedURL, Keyword_ID, IsClient) 
    SELECT SearchedURL ,@KeywordID ,1 FROM @UrlList 

你可以参考这个MSDN链接 - 如果你要插入的所有URL How to use TVP