我有一个“主键”值的php数组,它只对应于一个非常长的数据表的几行,保存在MySql数据库中。
如何只使用一个查询来获取那些行。是否可能或者我是否需要为每个主键进行一次查询? eg: SELECT * FROM table1 WHERE key = 8573
谢谢, 帕特里克
答案 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, ",") . ")";