Следующий синтаксис MySQL работает правильно:
SELECT
IF (
(SELECT COUNT(id) FROM preorder) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder)
) AS X
Это дает мне одно значение, которое я хочу вставить в предзаказ таблицы. Если я попытаюсь
INSERT INTO preorder (id)
VALUES
(SELECT
IF (
(SELECT COUNT(id) FROM preorder) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder)
) AS X)
это больше не работает. MySQL просто говорит мне прочитать руководство: -)
Цель синтаксиса - создать собственное автоинкрементное поле. Я хочу вставить 1, если счетчик равен нулю, и максимальное значение столбца id, если счетчик не равен нулю.
Edit:
Мне удалось заставить его работать со следующим синтаксисом:
INSERT INTO preorder (id)
VALUES
(
IF (
(SELECT COUNT(id) FROM preorder AS Y) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder AS X)
)
)
Есть ли лучший способ?