如何从MySql数据库表中仅获取某些行

时间:2009-12-17 20:42:10

标签: php mysql

我有一个“主键”值的php数组,它只对应于一个非常长的数据表的几行,保存在MySql数据库中。 如何只使用一个查询来获取那些行。是否可能或者我是否需要为每个主键进行一次查询? eg: SELECT * FROM table1 WHERE key = 8573

谢谢, 帕特里克

9 个答案:

答案 0 :(得分:9)

您可以使用MySQL的IN() operator

... WHERE x in (1,4,9,16)

答案 1 :(得分:4)

Select * from table WHERE primary_key IN (8573,8574,8578)

你的php数组你可以使用implode

$key_array = implode(",", $array);

Select * from table WHERE primary_key IN ($key_array)

答案 2 :(得分:2)

Select * from table1 WHERE key IN ([values separated by commas])

答案 3 :(得分:2)

在大多数数据库中,“key IN(set)”的工作速度比“key = a或key = b或...”快。

特别是对于PHP,您可以使用implode生成SQL:

$ SQL =“select * from table where key in(”。implode(',',$ KeyArray))。“)”

假设整数键。使用字符串键,您需要引用它们:

$ SQL =“select * from table where key in('”。implode(“','”,$ KeyArray))。“')”

答案 4 :(得分:1)

两个选项:

select * from table1 where key in (8573, 5244, 39211);
select * from table1 where key = 8573 or key = 5244 or key = 39211;

答案 5 :(得分:1)

使用OR语句。

SELECT * FROM table1 WHERE key=8573 OR key=9999;

当然这可能会很长,所以你可能想要使用循环并将键连接到查询字符串。

答案 6 :(得分:1)

$query = "SELECT * FROM tableName WHERE primaryKey IN ('" . implode("','", $keys) . "')";

答案 7 :(得分:0)

只需使用这种形式的选择

SELECT * FROM table1 WHERE key IN (1234, 1235, 6789, 9876)

答案 8 :(得分:0)

使用php的implode函数:

$keys = array(1,2,3,4);
$sql = "SELECT * FROM table WHERE key IN ( " . implode($keys, ",") . ")";