2013-11-10 72 views
0

有没有更快的方法从符合一系列数字的行中获取数据库结果?匹配多行结果的PHP mysql

例如,我有这个...

$result = mysql_query("SELECT * FROM scores WHERE p_cat=10 OR p_cat=11 OR p_cat=12 OR p_cat=13 OR p_cat=14 OR p_cat=15 OR p_cat=16 OR p_cat=17 OR p_cat=18 OR p_cat=19 ORDER BY p_time ASC LIMIT 50") 

所以基本上我想它匹配到19匹配任何数量的10但是,所有这些OR的显得如此多余的,艰巨的该行.. 。特别是当我有几十的范围内做到这一点高达200

回答

3

使用BETWEEN

WHERE p_cat BETWEEN 10 AND 19 

如果它不是一个连续的序列,使用IN

WHERE p_cat IN (10, 12, 13, 15, 19) 
+0

是实际上任何更快地获取期望的结果 ?或者只是更简洁? –

+0

我认为这可能会更快,特别是如果列上有索引。 – Barmar

0

使用这个代码WHERE p_cat介于10和1

  $result = mysql_query("SELECT * FROM scores 
       WHERE p_cat>=10 AND p_cat<=19 
       ORDER BY p_time ASC LIMIT 50")