Сообщение об ошибке: Код ошибки: 1328. Неверное количество переменных FETCH
Сообщения об ошибках пытаются сообщить вам, в чем проблема. Это в FETCH. Смотря на документацию:
13.6.6.3 Синтаксис FETCH курсора
FETCH [[NEXT] FROM] имя_курсора INTO имя_параметра [, имя_переменного] ...
Этот оператор выбирает следующую строку для
Оператор SELECT, связанный с указанным курсором (который должен быть
открыть) и перемещает указатель курсора. Если строка существует, извлекается
столбцы хранятся в именованных переменных. Количество столбцов
извлеченный оператором SELECT должен соответствовать номеру вывода
переменные, указанные в операторе FETCH .
https://dev.mysql.com/doc/refman/8.0/en/fetch.html
2 столбца в вашем запросе:
SELECT
id
, (
SELECT
t_name
FROM ajctb_titles b
WHERE a.jt_id = b.t_id
)
AS tableName
означает 2 переменные необходимы FETCH
Он еще даже не пытался выполнить подзапрос.
Что касается коррелированного подзапроса , это может быть проблемой. При использовании подзапроса в предложении select, подобном этому, MUST возвращает не более одного значения. Поэтому вы должны использовать limit 1
, если продолжите этот подзапрос.
Этот подзапрос может быть заменен объединением. например,
SELECT
id
, b.t_name AS tableName
FROM ajctb_vacancies a
LEFT JOIN ajctb_titles b ON a.jt_id = b.t_id
Вы можете использовать INNER JOIN
, если вам всегда нужно возвращать ненулевое имя таблицы.