Последующие запросы зависят от результата исходного запроса: как? - PullRequest
0 голосов
/ 14 августа 2010

Скажите, у меня 3 запроса. Запрос 1 возвращает часть информации, которая нужна Query 2 и Query 3. Есть ли способ для Query 2 и Query 3 получить доступ к этой информации из результата Query 1?

Сейчас у меня Query 1 выполняется дважды: один раз в Query 2 и один раз в Query 3. Это не кажется мне эффективным.

Есть ли лучший способ в MySQL?

РЕДАКТИРОВАТЬ 1:

Например, скажем, запрос 1 возвращает это:

    Id
   ====
    1
    3
    7

Теперь Query 2 и Query 3 нужно 1, 3, 7 в их отдельных предложениях WHERE.

Ответы [ 2 ]

0 голосов
/ 14 августа 2010

Вы можете исключить возможность изменения набора результатов с помощью сериализуемой транзакции.Большинство баз данных поддерживают их;MySQL делает, если вы используете механизм хранения InnoDB.Перед выполнением первого запроса введите команду

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

.По завершении всех выписок ROLLBACK;.

Подробнее см. Здесь ... http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html

0 голосов
/ 14 августа 2010

Предполагается:

query1: select id from foo;
query2: select * from bar where id = #value#;

Вы можете просто написать query2 следующим образом:

select * from bar where id in (select id from foo);

У вас может быть проблема, если элементы добавляются в foo между вами, выполняющими два запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...