Предложение IN не работает в состоянии WHERE в MYSQL Trigger - PullRequest
1 голос
/ 02 апреля 2019

Я создаю триггер, у которого запрос MYSQL с предложением IN выглядит следующим образом.

drop trigger onPublish;
delimiter $$
create trigger onPublish AFTER insert on publish_drawing_details
for each row
begin
Declare userIds VARCHAR(255);
set userIds = (select GROUP_CONCAT(refUser) from manpower where refProject=new.refProjectId and refRoleType in (select role from hr_user));
insert into notification_container(loginUserId,mailSubject,projectId,userIds,attachmentIds,ccMails,mailText,metaNotificationEventId)
values (new.submittedBy,new.mailSubject,new.refProjectId,userIds,new.attachmentIds,new.ccEmails,new.mailText,1);
end $$

Он работает нормально, если я напишу это как set userIds = (select GROUP_CONCAT(refUser) from manpower where refProject=new.refProjectId and refRoleType in (1,2,3,4,5));

Я пытаюсь сделать это следующим образомset userIds = (select GROUP_CONCAT(refUser) from manpower where refProject=new.refProjectId and refRoleType in (select GROUP_CONCAT(role) from hr_user));

но не работают вообще.

1 Ответ

0 голосов
/ 02 апреля 2019

Вам не нужно GROUP_CONCAT во внутреннем запросе, попробуйте следующее:

SET userIds = (
    SELECT GROUP_CONCAT(refUser) 
    FROM manpower 
    WHERE refProject=new.refProjectId 
    AND refRoleType IN (
        SELECT role 
        FROM hr_user
    )
);
...