|
|
|
| Есть таблица table
И есть массив $arr со значениями типа val1, val2... valn (значений может быть тысячи)
Эти значения могут встречаться в table в поле values
Как выбрать из массива те значения, которые не встречаются еще в таблице?
В общем случае это делается так:
выбрать всё из table where values=val1 or values=val2 or....
|
или же так:
выбрать всё из table where values in (val1, val2.... valn)
|
Как оптимальнее это делать? | |
|
|
|
|
|
|
|
для: kulibko
(08.11.2007 в 12:46)
| | Есть тысячи способов, но, конечно, не так, как Вы написали. Вот один из них.
Не знаю, оптимальный ли. Первое что пришло на ум.
<?
$array=array(val1, val2...valn);
$new_array=array();
$query=mysql_query("select * from table;");
while ($qr=mysql_fetch_array($query))
if (!in_array($array))
$new_array[]=$qr["field"];
?>
|
| |
|
|
|
|
|
|
|
для: olejek
(08.11.2007 в 15:44)
| | Если таблица с сотнями тысяч строчек, то в вашем варианте каждую нужно прочитать. Мне кажется что это совсем не оптимально. | |
|
|
|
|
|
|
|
для: kulibko
(08.11.2007 в 17:19)
| | А я и не писал, что он оптимальный. Вот еще один из этой тысячи:
$arr_string=implode(",", $arr);
$qr=mysql_query("SELECT * FROM table WHERE id IN (".$arr_string.");") or die (mysql_error());
|
| |
|
|
|
|
|
|
|
для: olejek
(09.11.2007 в 11:56)
| | Ну, это мой второй вариант.
Вопрос в том как наиболее оптимально это делается.
Опытные - подскажите пожалуйста :) | |
|
|
|