Как получить только определенные строки из таблицы базы данных MySql - PullRequest
1 голос
/ 17 декабря 2009

У меня есть массив php значений «первичного ключа», которые соответствуют всего нескольким строкам очень длинной таблицы данных, сохраненной в базе данных MySql. Как я могу получить только одним запросом только эти строки. Это возможно или мне нужно будет сделать один запрос на первичный ключ? eg: SELECT * FROM table1 WHERE key = 8573

Спасибо, Patrick

Ответы [ 9 ]

9 голосов
/ 17 декабря 2009

Вы можете использовать оператор MySQL IN () .

... WHERE x in (1,4,9,16)
4 голосов
/ 17 декабря 2009
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 голосов
/ 17 декабря 2009

В большинстве баз данных «ключ IN (установлен)» работает быстрее, чем «ключ = a или ключ = b или ...».

Специально для PHP вы можете использовать implode для генерации SQL:

$ SQL = "select * из таблицы, в которую вводится (" .implode (',', $ KeyArray)). ")"

Предполагая целочисленный ключ. С помощью строкового ключа вам нужно заключить их в кавычки:

$ SQL = "select * из таблицы, в которую вводится ('" .implode ("', '", $ KeyArray)). "')"

2 голосов
/ 17 декабря 2009
Select * from table1 WHERE key IN ([values separated by commas])
1 голос
/ 17 декабря 2009
$query = "SELECT * FROM tableName WHERE primaryKey IN ('" . implode("','", $keys) . "')";
1 голос
/ 17 декабря 2009

Используйте оператор OR.

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

Конечно, это может быть очень длинным, поэтому вы, вероятно, захотите использовать цикл и объединить ключи в строке запроса.

1 голос
/ 17 декабря 2009

Два варианта:

select * from table1 where key in (8573, 5244, 39211);
select * from table1 where key = 8573 or key = 5244 or key = 39211;
0 голосов
/ 17 декабря 2009

Используйте функцию взрыва php:

$keys = array(1,2,3,4);
$sql = "SELECT * FROM table WHERE key IN ( " . implode($keys, ",") . ")";
0 голосов
/ 17 декабря 2009

Просто используйте эту форму выбора

SELECT * FROM table1 WHERE key IN (1234, 1235, 6789, 9876)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...