开发者社区> 问答> 正文

如何根据一组KEY从sqlserver中读取对应的value:报错

客户端是c#2008,数据库是sql server2005

如何根据KEY同时查询多条记录?key之间没有规律,随即的,key可以理解为自增ID,value是对应的那条记录,一次提取key的数量不会超过50个,但数据库中记录很多,也就是分页展现。

如key(100,201,4001,80,...10)

展开
收起
kun坤 2020-06-07 00:32:57 552 0
1 条回答
写回答
取消 提交回答
  • 先在后台程序中将key组装为串('100','201','4001','80',...'10')以此为参数组装sql.

    select key, value from table where key in ('100','201','4001','80',...'10');

    ######其他你那in不会有问题的, 才50个值, 具体讨论见http://www.oschina.net/question/175048_26682###### @lucika : 对于oracle10g in仍然走索引,有些时候,写in比写exists还快,sql server不是很清楚, 如果是在不行就循环拼OR吧, 50个条件也不是很长. 如果你可以用过程, 创建一个临时表, 只有一个字段, 50个ID插入进去, 以此左联接吧###### @scl33 : 实际情况是一次查询相关于查询了N次,分别对每一个key值进行了一次查询!从表扫描的角度看,一个人访问=N个人访问。这种方式被领导否定了。构建临时表,进行表关联,领导也不是非常赞同。###### @lucika : 是的, 不过考虑到你说的不超过50, 那应该没关系的###### @scl33 : 查阅了一下,IN这种方式性能较差,需N次扫描表。如果能一次效果更佳
    2020-06-07 00:33:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载