Я хочу использовать операторы SET x = IFNULL(expr1, expr2)
, где я пытаюсь выбрать id в expr1, и если он не существует, я хочу вставить новую строку в expr2 и вернуть последний вставленный id с SELECT LAST_INSERT_ID()
Объединить два оператора с одним выражением в MySql
Как я могу достичь чего-то вроде SET x = IFNULL(SELECT id WHERE x = ..., (INSERT INTO ...; SELECT LAST_INSERT_ID()))
? (Expr2 кажется неправильным синтаксисом)
ли вы пытаетесь вставить строку в таблицу только в том случае, если она еще не существует? Если это так, вы делаете это неправильно. –
Я начал играть с этим, но это действительно неясно, чего вы хотите. Если вы хотите уникальность, то заставьте MySQL закрепить его, создав индекс UNIQUE для уникальных столбцов. Если вы используете первичный ключ, тогда это будет делать. Если вы хотите 'LAST_INSERT_ID()', то столбец также должен быть установлен автоматически. Это очень похоже на проблему XY, поэтому отредактируйте свой квест, чтобы точно описать свой прецедент, и посмотрите, что вы получите. –