#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';