Извините за заголовок, я не могу найти краткое имя или описание моей проблемы.Пользовательский MySql Query
TABLE_A: каждая строка представляет запрос пользователя (идентификатор, ..., статус)
TABLE_B: каждый запрос в TABLE_A может иметь 1 или более строк в TABLE_B в подразделах для запроса (ID, request_id, ...., status)
Моя система обрабатывает строки в таблице_B с помощью cron с одновременным запуском нескольких кронов. Cron устанавливает статус в таблице_B до 3 (завершен), когда он завершен.
Теперь мне нужно знать, когда все подразделы (строка таблицы_B) для каждого запроса (таблица_А) завершены, поэтому я могу обновить статус в таблице_А.
Теперь я выбираю первый запрос в таблице_A (TOP 1), затем получаю статус для всех подразделов в таблице_B и проверяю, имеют ли все из них статус == 3, это работает, но я хотел бы иметь возможность к этому с помощью одного запроса, без необходимости проверять значения в коде.
Что-то вроде этого:
select the request_id's
from Table_B where **all the rows** with this request_id has status=3
Любая идея? любая помощь приветствуется.
tnx похоже, что это работает, насколько воздействие с использованием такого запроса будет иметь производительность? учитывая таблицу со 100 000 + строками – Exlord
Он должен выполнить ОК, если таблица правильно проиндексирована. Вы можете попробовать его с вашими фактическими данными и рассказать нам, как он работает. Кроме того, вы можете попробовать «НЕ СУЩЕСТВУЕТ» и посмотреть, как он сравнивается. –
'' кажется, что в моей маленькой тестовой таблице '' '' '' была намного быстрее, потребовалось '0,0005 сек', где запрос' NOT EXIST', написанный ниже @DRapp с подзапросом в той же таблице, занял '0,0476 сек'. но я думаю, что я должен сделать еще один тест с большим столом, чтобы быть уверенным. – Exlord