mysql - INSERT INTO 且 SELECT COUNT 子查询返回 null

标签 mysql sql sql-insert subquery

我有一张 table ,里面有练习,每个练习在另一个 table 上都有一些插图。我想插入插图并使用“位置”属性保持其顺序。 因此,当我添加插图时,“位置”属性等于给定练习的插图数量(因为位置从 0 开始)。

所以我尝试了类似的方法:

INSERT INTO illustrations (path, date_creation, id_exercise, position) 
VALUES (
    "2789c0bdda6981fadd87c30af74dfc5d.jpg", 
    "1384104485", 
    "4",  
    (SELECT COUNT(I.id)  
     FROM illustrations I 
     WHERE I.id_exercise = 4 
     GROUP BY I.id_exercise
    )
)

此查询工作正常,但前提是我已经至少有一个练习插图。否则,子查询返回 null,并且我收到此错误:“列‘位置’不能为空”,这是合乎逻辑的。通常,如果选择子查询返回 null,我会输入零。我尝试使用 ISNULL() 但没有找到正确的语法。有什么建议吗?

最佳答案

使用COALESCE将子查询的空结果更改为默认值。

INSERT INTO illustrations (path, date_creation, id_exercise, position) 
VALUES (
   "2789c0bdda6981fadd87c30af74dfc5d.jpg", 
   "1384104485", 
   "4",  
   COALESCE((SELECT COUNT(I.id)  
     FROM illustrations I 
     WHERE I.id_exercise = 4 
   ), 0)
)

此外,GROUP BY 也是不必要的。

关于mysql - INSERT INTO 且 SELECT COUNT 子查询返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893518/

相关文章:

php - != 在 sql 中或 != 在 php 中

php - MYSQL 选择 'random' 行,但如果再次调用,总是给出相同的随机行

python - 将多个 try except 与 raise 结合起来 - 注册用户 - Python 3

python - 选择不同的 SQLalchemy 键控元组错误

mysql - 如何合并 2 个或更多类似的 mysql 行?

Java 和 PHP POST 请求不起作用

c# - 是否有 C# IN 运算符?

sql - 在不使用别名的情况下,如何从内部查询中识别连接的列?

php - 将数据从一个表插入到另一个表并添加新值

javascript - 使用 HTML/PHP/AJAX 将行插入数据库