MySQL 根据条件插入不同的值

标签 mysql

我在 MySQL 中有以下查询。这会将一个新项目插入到列表中,其中新项目的位置设置为比当前最大位置大 1。

INSERT INTO items
SET item_name="apple",
    position=(SELECT MAX(i.position)+1 FROM items i WHERE i.list_id=12),
    list_id=12

这行得通,但是对于 position,如果 SELECT 语句返回一个空集,我想插入一个 0。这可以在一个查询中完成吗(这样我就可以避免使用事务)?

最佳答案

尝试 COALESCE():

INSERT INTO items
SET item_name="apple",
position=COALESCE((SELECT MAX(i.position)+1 FROM items i WHERE i.list_id=12), 0),
list_id=12

关于MySQL 根据条件插入不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18723342/

相关文章:

php - 使用 ON DUPLICATE KEY 准备好的语句

php - 最新访客

mysql - 在 MySQL 查询中使用 Coldfusion DateDiff?

php、jquery 和 ajax - 根据先前选择的值填充选择下拉列表

mysql - 错误代码 : 1052 Column 'admin_id' in field list is ambiguous

MySQL 映射表插入约束不起作用

php - Magento:自写产品导入/更新后重建索引抛出异常

php - 在 PHP 中更新已经选中的复选框

php - 为具有多个地点的商店创建网站

MySql - 错过的事件时间表