我在 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/