简体   繁体   English

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

[英]How to fetch only certain rows from an MySql database table

I have a php array of "primary key" values, which correspond to just a few rows of a very long table of data, saved on a MySql database. 我有一个“主键”值的php数组,该值对应于保存在MySql数据库中的非常长的数据表的仅几行。 How can I fetch with just one query only those rows. 我如何只用一个查询来获取那些行。 Is it possible or will I need to make one query per primary key? 是否可以或者我需要对每个主键进行一次查询? eg: SELECT * FROM table1 WHERE key = 8573

Thanks, Patrick 谢谢,帕特里克

您可以使用MySQL的IN()运算符

... WHERE x in (1,4,9,16)
Select * from table WHERE primary_key IN (8573,8574,8578)

for your php array you could use implode 为您的PHP数组,您可以使用爆破

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

Select * from table WHERE primary_key IN ($key_array)
Select * from table1 WHERE key IN ([values separated by commas])

On most databases, "key IN (set)" works faster than "key=a or key=b or...". 在大多数数据库上,“键输入(设置)”比“键= a或键= b或...”的工作速度更快。

Specifically for PHP, you may use implode to generate your SQL: 专门针对PHP,您可以使用implode生成SQL:

$SQL = "select * from table where key in (".implode(',', $KeyArray)).")" $ SQL =“从表中选择*,在其中键入(” .implode(',',$ KeyArray))。“)”

Assuming integer key. 假设整数键。 With a string key, you need to quote them: 使用字符串键,您需要引用它们:

$SQL = "select * from table where key in ('".implode("','", $KeyArray))."')" $ SQL =“从表中输入*('” .implode(“','”,$ KeyArray))。“')”

Two options: 两种选择:

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

Use the OR statement. 使用OR语句。

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

Of course this can get really long, so you'll probably want to use a loop and concatenate the keys to the query string. 当然,这可能会变得很长,因此您可能需要使用循环并将键连接到查询字符串。

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

只需使用这种形式的选择

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

Use php's implode function: 使用php的爆破功能:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM