Как правильно написать запрос на подсчёт количества значений в строке sql?

Есть таблица Phone в ней 2 поля FIO_ID и Number, у каждого FIO_ID есть какое то количество Number, мне нужно поставить ограничение на удаление, чтобы у Каждого FIO_ID было не менее 1 Number. Как отразить это в sql запросе ?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
DELETE `p`.* 
  FROM (
    SELECT `FIO_ID` FROM `Phone` GROUP BY `FIO_ID` HAVING COUNT(*) > 1
  ) AS `p1` 
  JOIN `Phone` AS `p` ON `p`.`FIO_ID` = `p1`.`FIO_ID` AND `p`.`Number` = :phoneNumber

Либо ставить триггер BEFORE DELETE, выдающий исключение при попытке удаления.
Ответ написан
@Ababinili Автор вопроса
Конечная версия работающего кода
BEGIN
DECLARE cnt INT;
SELECT COUNT(*) FROM phone WHERE FIO_ID = OLD. FIO_ID INTO cnt;
IF cnt = 1 THEN 
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Текст сообщения';
END IF;
END
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dinegnet
При удаление по одной строке - легко count() > 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы