Итак, я смотрел на этот вопрос и пытаюсь выяснить, используется ли Coalesce. правильно за ответ.
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
Прошу прощения, если это неправильный способ задать этот вопрос, но у меня не было достаточно представителей, чтобы прокомментировать этот пост 5-летней давности. Мое замешательство вызвано использованием Coalesce в этом ответе. Coalesce сравнивает два или более столбца и берет из них первое значение NON Null, если я правильно понимаю.
Проблема этого пользователя заключалась в том, что если значение «Боб» не существовало, то его поле user_id было бы 0 при вставке, что ему не нужно, потому что оно должно начинаться с 1.
Итак, правильно ли я понимаю coalesce, думая, что здесь это вообще не нужно, учитывая, что даже в ответе он просто поставил 0 для второго аргумента. Кажется, что Coalesce в этом примере ничего не дает, и на самом деле рабочая лошадка - это Select 1 + Select max ().
Опять же, я просто пытаюсь понять концепцию Coalesce, поскольку я натолкнулся на это как на пример проблемы, с которой я столкнулся.