Подзапрос в инструкции select не может найти производную таблицу?

#mysql #sql #correlated-subquery #derived-table

#mysql #sql #коррелированный подзапрос #производная таблица

Вопрос:

Мне интересно, есть ли способ заставить это работать. Я извлекаю таблицу «WHERE lie_start =’green'» (и кучу других условий, которые я не хочу повторять), нужно получить из нее номер (и несколько других сведений). Дополнительно мне нужно количество записей с дополнительным условием lie_finish=’holed’. В настоящее время я получаю сообщение об ошибке: таблица mydb.x не существует.

 SELECT 
    COUNT(*) AS total, 
    (SELECT COUNT(*) FROM x WHERE lie_finish='holed') as holed
FROM (SELECT * FROM mydb.strokes WHERE lie_start='green') as x
  

Ответ №1:

Вам нужно повторить имя таблицы. Псевдоним таблицы не распознан:

 SELECT COUNT(*) AS total, 
       (SELECT COUNT(*) FROM mydb.strokes WHERE lie_finish='holed') as holed
FROM (SELECT * FROM mydb.strokes WHERE lie_start='green') as x;
  

Однако это гораздо проще записать как:

 select count(*) as total, sum(lie_finish = 'holed') as holed
from mydb.strokes s
where lie_start = 'green';