首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在T-SQL中有没有替代" in“语句的方法?

问在T-SQL中有没有替代" in“语句的方法?
EN

Stack Overflow用户
提问于 2018-09-25 12:40:47
回答 2查看 1.6K关注 0票数 1

考虑下面的代码片段:

代码语言:javascript
复制
SELECT 
    vbs.SKUID, SKUName, SUM(vbs.Quantity) AS Qty
FROM   
    BatchStocks AS vbs
WHERE  
    vbs.SKUID IN (Here i have almost 12000 SKU)
    AND vbs.StoreID IN (%q)
    AND vbs.StockType = %n
GROUP BY
    vbs.SKUID, vbs.SKUName

在where条件下,我有近12000个SKUID,执行语句需要很长时间。你能建议我如何改进这个查询吗?

EN

回答 2

Stack Overflow用户

发布于 2018-09-25 12:45:12

您可以使用EXISTS()

将SKU放入临时表中

和

代码语言:javascript
复制
WHERE  vbs.SKUID IN (Here i have almost 12000 SKU)

更改为

代码语言:javascript
复制
WHERE  EXISTS
       (
           SELECT *
           FROM   #TEMP x
           WHERE  x.SKUID  = vbs.SKUID 
       )
票数 5
EN

Stack Overflow用户

发布于 2018-09-25 13:34:31

您也可以使用Inner Join, EXISTS而不是IN。请参考EXISTS查询:

代码语言:javascript
复制
SELECT 
    vbs.SKUID, SKUName, SUM(vbs.Quantity) AS Qty
FROM   
    BatchStocks AS vbs
WHERE  
    EXISTS ( select 1 from #TEMPTABLE t on t.SKUID = vbs.SKUID)
    AND vbs.StoreID IN (%q)
    AND vbs.StockType = %n
GROUP BY
    vbs.SKUID, vbs.SKUName

关于INNER JOIN请参考下面的查询:

代码语言:javascript
复制
SELECT 
    vbs.SKUID, SKUName, SUM(vbs.Quantity) AS Qty
FROM   
    BatchStocks AS vbs
    INNER JOIN #TEMPTABLE t on t.SKUID = vbs.SKUID
WHERE  vbs.StoreID IN (%q)
    AND vbs.StockType = %n
GROUP BY
    vbs.SKUID, vbs.SKUName
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52490676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档