我有一個「主鍵」值的php數組,它對應於一個非常長的數據表的幾行,保存在MySql數據庫中。 如何僅使用一個查詢來獲取這些行。是否可能或將需要爲每個主鍵進行一次查詢? eg: SELECT * FROM table1 WHERE key = 8573
如何只從MySql數據庫表中提取某些行
感謝, 帕特里克
我有一個「主鍵」值的php數組,它對應於一個非常長的數據表的幾行,保存在MySql數據庫中。 如何僅使用一個查詢來獲取這些行。是否可能或將需要爲每個主鍵進行一次查詢? eg: SELECT * FROM table1 WHERE key = 8573
如何只從MySql數據庫表中提取某些行
感謝, 帕特里克
Select * from table WHERE primary_key IN (8573,8574,8578)
你的PHP數組,你可以使用破滅
$key_array = implode(",", $array);
Select * from table WHERE primary_key IN ($key_array)
您可以使用MySQL的IN() operator。
... WHERE x in (1,4,9,16)
IN是一個SQL silver bullet,太多的編碼器不使用,因爲他們不知道或忘記它存在。 – TravisO
Select * from table1 WHERE key IN ([values separated by commas])
兩個選項:
select * from table1 where key in (8573, 5244, 39211);
select * from table1 where key = 8573 or key = 5244 or key = 39211;
只要使用這種形式的選擇
SELECT * FROM table1 WHERE key IN (1234, 1235, 6789, 9876)
使用PHP的破滅功能:
$keys = array(1,2,3,4);
$sql = "SELECT * FROM table WHERE key IN (" . implode($keys, ",") . ")";
在大多數數據庫, 「密鑰(套)」 的作品快於 「鍵=一個或鑰匙= B或...」。
專門爲PHP,你可以使用破滅產生的SQL:
$ SQL = 「select * from表,其中鍵(」 .implode( '',$ KeyArray)) 「)」
。假設整數鍵。用字符串鍵,你需要說出來了:
$ SQL = 「select * from表,其中關鍵在( '」 .implode( 「 ''」,$ KeyArray))。 「')」
使用OR語句。
SELECT * FROM table1 WHERE key=8573 OR key=9999;
當然,這可以得到很長,所以你可能會想使用循環和串聯的鑰匙查詢字符串。
$query = "SELECT * FROM tableName WHERE primaryKey IN ('" . implode("','", $keys) . "')";
不要忘記爲您的表添加索引。在「長數據表」上運行查詢很昂貴。考慮添加這個:alter table table1 add index(key) – Zepplock