mysql - 如果值为 NULL,则将值递增 1

标签 mysql

如果表中至少有一行,则下面的查询有效。我希望它在返回 NULL 时返回 1。

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;

最佳答案

SELECT MAX(COALESCE(unique_item_id, 0)) + 1 FROM users_map_item WHERE ...

应该可以解决问题。

关于mysql - 如果值为 NULL,则将值递增 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17912749/

相关文章:

php - 计算每个变量在表中出现的次数

php - 获取所有新闻和所有评论

mysql - Google App Engine 中的 Datastore 与 Cloud SQL

MySQL查询表过滤问题

php - 如何检索数组中按钮的名称?

php - 如何在表格中显示搜索结果,同时将其导出为 csv 文件

java - 使用jsp替换结果集语句中存储在字符串中的mysql函数的值

mysql - 如何SELECT FROM多个子查询结果的交集?

php - 从另一个表获取相关数据

mysql - 使用连接池处理事件记录超时的正确方法是什么?