繁体   English   中英

在行(val11,val21,val31),…,(val11,val21,val31)中选择其中(field1,field2,field3)的行

[英]Select rows where (field1, field2, field3) in set (val11,val21,val31),…,(val11,val21,val31)

我正在使用mysql。 我需要从表中选择行(具有字段id,field1,field2,field3 )其中向量(v11,v21,v31),(v12,v22,v32),...,(v1N,v2N,v3N)中的(field1,field2,field3) (v11,v21,v31),(v12,v22,v32),...,(v1N,v2N,v3N) 是否可以通过一个查询来完成? 如果是,我需要索引哪些字段以加快查询速度? 并且此查询比N串行简单选择查询快/慢吗?

先感谢您!

您可以像这样进行多列IN比较:

SELECT id,
       field1,
       field2,
       field3
FROM   tbl
WHERE  (field1,field2,field3) IN (
           (v11,v21,v31),
           (v12,v22,v32),
           (v1n,v2n,v3n)
       )

实质上是在说:

哪里

(field1 = v11 AND field2 = v21 AND field3 = v31) OR
(field1 = v12 AND field2 = v22 AND field3 = v32) OR
...                                              OR
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM