以下のクエリは、テーブルに少なくとも 1 つの行がある場合に機能します。を返すイベントで 1 を返したいNULL
。
mysql> desc users_map_item;
+----------------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------------------+------+-----+---------+-------+
| map_user_id | mediumint(8) unsigned | NO | MUL | NULL | |
| map_item_id | mediumint(8) unsigned | NO | PRI | NULL | |
| unique_item_id | mediumint(8) unsigned | NO | | NULL | |
| item_owner | mediumint(8) unsigned | NO | | NULL | |
| privilege | tinyint(1) | YES | | NULL | |
+----------------+-----------------------+------+-----+---------+-------+
SELECT case when unique_item_id IS NULL then isnull(max(unique_item_id)+1) else
max(unique_item_id)+1 end as unique_item_id FROM users_map_item WHERE map_user_id = 1;