0

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

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

但我不能使用 between 因为中间的数字可能不相关

那么如何进行这种类型的查询呢?

$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";

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

提前致谢

4

2 回答 2

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 文档

于 2012-04-20T08:16:41.383 回答
0

我建议对其他答案进行一些改进:

$pcs = 数组(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,请考虑制作一个常量

于 2012-04-20T08:20:10.617 回答