MySQL Error 1172 - Результат состоял из более чем одной строки - PullRequest
3 голосов
/ 01 марта 2012

Я получаю эту ошибку от MySQL при выполнении запроса внутри хранимой процедуры:

Код ошибки: 1172 Результат состоит из более чем одной строки

Iпонять ошибку: я делаю SELECT (...) INTO (var list), и, следовательно, запрос требуется вернуть одну строку.Когда я использую LIMIT 1 или SELECT DISTINCT, ошибка исчезает.

Однако: когда я запускаю исходный запрос вручную (без LIMIT или DISTINCT), возвращает одинстрока .Так что я подозреваю, что столкнулся с ошибкой MySQL.Кто-нибудь знает, что может происходить?

РЕДАКТИРОВАТЬ

Я отправляю SQL в соответствии с просьбой.Все, что начинается с подчеркивания, является переменной, объявленной ранее внутри процедуры.Когда я проверяю его, я заменяю _cd_pai_vc идентификатором записи, вызывающей проблему.

SELECT  a.valor,    IFNULL(p.valor, 0), fn_cd2alias(ra.cd_registro),    fn_cd2alias(IFNULL(p.valor,0))
INTO    _valor,     _cd_pai_vc,         _alias_verbete,                 _alias_pai
FROM dados_registros ra
    INNER JOIN dados_varchar255 a
    ON a.cd_registro = ra.cd_registro
        AND a.fl_excluido = 0
        AND a.alias = 'vc-verbetes-termo'
    LEFT OUTER JOIN dados_registros rp
        INNER JOIN dados_int p
        ON p.cd_registro = rp.cd_registro
            AND p.fl_excluido = 0
            AND p.alias = 'vc-remissoes-termo referenciado'
        INNER JOIN dados_int pt
        ON pt.cd_registro = rp.cd_registro
            AND pt.fl_excluido = 0
            AND pt.alias = 'vc-remissoes-tipo remissao'
            AND fn_cd2alias(pt.valor) = 'hierarquica'
    ON ra.cd_registro = rp.cd_entidade
        AND rp.fl_excluido = 0
        AND fn_cd2alias(rp.cd_modulo) = 'vc-remissoes'
WHERE ra.cd_registro = _cd_pai_vc 
    AND ra.fl_excluido = 0;

Ответы [ 4 ]

2 голосов
/ 05 января 2017

У меня была эта проблема, и я обнаружил, что она исчезла, когда я использовал и имя таблицы, и имя столбца в операторах выбора, даже в простых.

1 голос
/ 12 апреля 2017

У меня была похожая проблема, и когда я поставил псевдоним таблицы , это сработало как шарм.

SELECT t.tax_amount,t.tax_percentage FROM nepse_tax t
0 голосов
/ 24 октября 2018

У меня была такая же проблема, решение от Nava Bogatee сработало как шарм, ниже часть процедуры

select attendance
into brb
from Stud
where Rno like rno;

Это не сработало, я понятия не имею, почему. Затем я изменил это на

select t.attendance
into brb
from Stud t
where t.Rno like rno;

и это сработало. Я думаю, по какой-то причине столбец Rno возвращает все значения в таблице, поэтому ошибка с несколькими строками.

0 голосов
/ 17 ноября 2014

Я столкнулся с той же ошибкой в ​​mysql.

Ошибка MySQL 1172 - Результат состоял из нескольких строк

Затем я увидел вопрос:

Ошибка хранимой процедуры mysql (1172, «Результат состоял из более чем одной строки»)

Но я не хотел спрашивать.LIMIT 1; - не соответствует моим ожиданиям.Он просто вернет первую строку для всего случая.

Тогда я начал глубоко рассматривать этот вопрос, и теперь я получил решение.

Этот случай произошел, потому что код для хранимой процедуры возвращает несколькострок, и это было потому, что у меня было много extra spaces and tab characters в моем коде [код, который я написал для хранимой процедуры], и когда я удалил их только с одной / двумя соответствующими символами табуляции - это было похоже на летательный аппарат .

Я не знаю, тот ли это случай, с которым вы сталкивались.В любом случае, попробуйте.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...