Как заменить вложенный тип NOT EXISTS на JOIN?

0

Эй, я вроде бы застрял, пытаясь оптимизировать запрос, у которого есть НЕ-EXISTS-предложение на вложенном SELECT. Я переписывал свои запросы с вложенными выделениями, меняя их на соединения, но по этому поводу я не уверен, как объединить это с предложением NOT EXISTS. У меня есть следующий запрос:

SELECT `reg_no`, COUNT(*) AS `records_found` 
FROM (`club_records` AS `cr`) 
WHERE NOT EXISTS ( 
  SELECT `number` FROM `members` WHERE `members`.`number` = `cr`.`alt_reg_no` 
)
Теги:
query-optimization

1 ответ

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

http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/

SELECT `reg_no`, COUNT(*) AS `records_found`,members`.`number`
FROM `club_records` AS `cr`
LEFT OUTER JOIN members`
ON  `members`.`number` = `cr`.`alt_reg_no
WHERE members`.`number` IS NULL;

внимание: определение номера члена должно включать ограничение NOT NULL

  • 0
    Спасибо! Установите для столбца номера участника значение NOT NULL, и это прекрасно работает

Ещё вопросы

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