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

0

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

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

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

ИЗМЕНИТЬ 1:

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

    Id
   ====
    1
    3
    7

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

  • 0
    И еще более интересный вопрос: как теперь убедиться, что второе выполнение возвращает те же строки, что и первое?
  • 0
    Э-э ... Разве это не просто соединение? Можете ли вы дать больше контекста?
Показать ещё 2 комментария
Теги:
database

2 ответа

0
Лучший ответ

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

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

команды. Когда вы завершили все утверждения, ROLLBACK;.

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

0

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

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

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

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

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

  • 0
    Это способ, которым OP уже выполняет запросы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню