max функции не работают в моей хранимой процедуре, она возвращает то же значение с функцией min, но работает в редакторе sql. моя колонка int без знака. вот мой код:
эти коды ниже работают правильно, но не в моей хранимой процедуре.
select idPatient from tb_patient where nomPatient='CARRIE' and prenomPatient='Marie Claude' and idPatient>267; -- result 268
select max(idPatient) from tb_patient where nomPatient='CARRIE' and prenomPatient='Marie Claude'; -- result 268
select idPatient from tb_patient where nomPatient='CARRIE' and prenomPatient='Marie Claude'; -- result 267 268
drop procedure if exists findTwins;
delimiter ##
create procedure findTwins()
begin
declare getNom varchar(40);
declare getPrenom varchar(40);
declare getId int default 1;
declare getId2 int default 1;
if(select count(*) from tb_patient group by nomPatient,prenomPatient having count(*)=2 limit 1)
then
select nomPatient,prenomPatient into getNom,getPrenom from tb_patient group by nomPatient,prenomPatient having count(*)=2 limit 1;
set getId=(select min(idPatient) from tb_patient where nomPatient=getNom and prenomPatient=getPrenom);
set getId2=(select max(idPatient) from tb_patient where nomPatient=getNom and prenomPatient=getPrenom);
select concat(getNom,' ',getPrenom,' ',getId,' ',getId2) as Patient;
end if;
end##
call findTwins();
результат этого запроса должен быть: CARRIE Marie Claude 267 268
но я получаю КЭРРИ Мари Клод 267 267
Что бы я ни делал, я не могу найти 268 из своей хранимой процедуры, даже когда я просто запускаю select ... где ... без функции min или max, я получаю только 267.
структура таблицы.
CREATE TABLE tb_patient (
idPatient INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
nomPatient varchar(40) not null,
prenomPatient varchar(40) not null,
emailPatient varchar(40) unique,
index ind_patient_name(nomPatient,prenomPatient))
ngine=innoDB;