аналог оператора in из SQL в mysql

Pansy

Новичок
аналог оператора in из SQL в mysql

как сделать запрос select * from table where id in (select id from table2) в mysql, т.е. выбрать записи, в которых одно из значений входит в массив значений из другого запроса?
 

Gorynych

Посетитель PHP-Клуба
Pansy

1) вложенные SELECT'ы не поддерживается диалектом языка SQL, используемом в СУБД MySQL

2) вместо этого можно попробовать сделать cлияние вложенного подзапроса (то о чем Вам пытаются сказать) - см. тут http://www.citforum.ru/database/digest/over042.shtml


3) оператор IN - это просто указание множества значений, которые может принимать поле, но не обязательно вложенный селект. Как таковой оператор IN присутсивует в диалекте SQL, используемом в СУБД MySQL
 

zerkms

TDD infected
Команда форума
Gorynych
3 выстрела, и все в молоко.

ps: тоже можешь пройти по вышеуказанной ссылке, дабы впредь не дезинформировать посетителей форума
 

Gorynych

Посетитель PHP-Клуба
Andreika

не знаю насчет пятерки. Скажем так - для версии 4.х это не живая конструкция
 

Gorynych

Посетитель PHP-Клуба
zerkms


ну-ну... Скажем так:
Код:
> proff/access/db
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1783429 to server version: [b]4.0.24[/b]-log

mysql> create table t1 (id int not null primary key);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t1 values (1);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t1 values (2);
Query OK, 1 row affected (0.00 sec)

mysql> create table t2 (fid int not null primary key);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t2 values (1);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t1 inner join t2 on t2.fid=t1.id;
+----+-----+
| id | fid |
+----+-----+
|  1 |   1 |
+----+-----+
1 row in set (0.01 sec)

mysql> select * from t1 where t1.id IN (select fid from t2);
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresponds
to your MySQL server version for the right syntax to use near 'select * from t2)' at line 1
так что в чем я дезинформирую посетителей я не понял. Наверху довольно простой
(по читаемости) код работы с mysql-консолью на хостинговом сервере (читай - mysql
предустановлен хостером).
 

zerkms

TDD infected
Команда форума
Gorynych
судя по всему ты и насчёт 4.1.х тоже не знаешь

ps: будем надеяться что тредстартер не будет внимать глупым предложениям о вложенных запросах и сделает объединением
 

Gorynych

Посетитель PHP-Клуба
zerkms

P.S. искренне рад за тех, у кого версия MySQL поддерживает вложенные подзапросы, но больше привык работать с более распространенными вариантами. Увы, в большинстве своем масс-хостеры не любят обновляться.
 
Сверху