Mysql查询基于特定随机数列表?

时间:2012-04-20 08:11:42

标签: mysql

我正在尝试根据特定数字进行查询,在此阶段我只需要以逗号分隔值硬编码到页面中。

2312,2431,2439,2440,2442,....

但我不能在两者之间使用,因为两者之间的数字可能不相关

那么我该如何查询这种类型?

$sql= "SELECT * FROM table 
WHERE pc=2431 OR pc=2439 OR 
      pc=2440 OR pc=2442 OR 
      pc=2443 OR pc=2444 OR 
      pc=2445 OR pc=2446 OR 
      pc=2312 AND v=1 
ORDER BY id DESC 
LIMIT $offset, $rowsperpage";

我尝试了这种方式,但必须有更好的方法。

提前致谢

2 个答案:

答案 0 :(得分:1)

确实有......您可以使用IN运算符,以便查询变为:

SELECT *
  FROM table
 WHERE pc IN (2431,2439,2440,2442,2443,2444,2445,2446,2312)
   AND v=1
 ORDER BY id DESC
 LIMIT $offset, $rowsperpage

简单:o)

有关详细信息,请查看http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_in

上的MySQL文档

答案 1 :(得分:0)

我建议对其他答案稍作改进:

$ pcs = array(2431,2439,2440,2442,2443,2444,2445,2446,2312);

"SELECT *
FROM table
WHERE pc IN (" . implode(",", $pcs) . ")
AND v=1
ORDER BY id DESC
LIMIT $offset"

这样,如果以后你的id会发生变化并且你有几个查询使用它们,你将只需要更新一个地方而不是N(其中N是查询数)。如果您在许多不同的文件中使用这些ID,请考虑制作一个常量