MySQL Subquery IN результаты - PullRequest
       6

MySQL Subquery IN результаты

2 голосов
/ 27 августа 2011

Я хочу использовать идентификаторы из запроса на my_table, чтобы выбрать все строки field_b из my_table_2.

  SELECT field_b
  FROM my_table_2
  WHERE my_id_2 IN (
         SELECT my_id FROM my_table WHERE field_a = 1234
  );

Я получаю ERROR 1054 (42S22): Unknown column 'my_id_2' in 'IN/ALL/ANY subquery', выполняя вышеуказанный запрос.

Ниже приведены примеры моихТаблицы для справки:

  mysql> select * from my_table;
    +-------+---------+
    | my_id | field_a |
    +-------+---------+
    |     1 |    1234 |
    +-------+---------+
    |     2 |    1234 |
    +-------+---------+
    2 row in set (0.00 sec)

mysql> select * from my_table_2;
+-------+-----------+
| my_id_2 | field_b |
+---------+---------+
|     1   |  5678   |
+-------+-----------+
1 row in set (0.00 sec)

Ответы [ 2 ]

3 голосов
/ 27 августа 2011

Другой способ

SELECT field_b
FROM my_table_2 m2
WHERE EXISTS (
     SELECT my_id FROM my_table 
     WHERE field_a = 1234 and m2.my_id_2=my_table.my_id
);
1 голос
/ 27 августа 2011

Этот запрос может быть переписан как простая операция соединения:

SELECT field_b
FROM my_table_2
INNER JOIN my_table ON my_table_2.my_id_2 = my_table.my_id
WHERE field_a = 1234;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...