Mysql errno 1242 子查询 returns 超过一列

Mysql errno 1242 subquery returns for than one column

我创建了一个触发器来确保 en employees shift 不与该员工的另一个班次重叠但是当员工在同一天有一个以上的班次时我收到错误“subquery returns more多于一列”,有解决办法吗?

delimiter //
CREATE TRIGGER work_time_constraints
BEFORE INSERT ON shifts
FOR EACH ROW
BEGIN

IF new.start_time BETWEEN (SELECT start_time FROM shifts WHERE new.employeeID = employeeID 
AND CONVERT(new.start_time, DATE) = CONVERT(start_time, DATE)) 
AND (SELECT end_time FROM shifts WHERE new.employeeID = employeeID AND CONVERT(new.end_time, 
DATE) = CONVERT(end_time, DATE))

OR new.end_time BETWEEN (SELECT start_time FROM shifts WHERE new.employeeID = employeeID AND 
CONVERT(new.start_time, DATE) = CONVERT(start_time, DATE)) 
AND (SELECT end_time FROM shifts WHERE new.employeeID = employeeID AND CONVERT(new.end_time, 
DATE) = CONVERT(end_time, DATE))

THEN SIGNAL SQLSTATE '45000'
SET MYSQL_ERRNO = 9997,
MESSAGE_TEXT = 'Shift overlaps existing shift for this employee';
END IF;
END//
delimiter ; 
CREATE TRIGGER work_time_constraints
BEFORE INSERT ON shifts
FOR EACH ROW
BEGIN
IF EXISTS ( SELECT NULL
            FROM shifts 
            WHERE employeeID = NEW.employeeID
              AND DATE(start_time) < DATE(NEW.end_time)
              AND DATE(NEW.start_time) < DATE(end_time) ) THEN
    SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO = 9997, MESSAGE_TEXT = 'Shift overlaps existing shift for this employee';
END IF;
END