我有一个查询,当我直接通过我的MySQL管理器运行它时,但查询似乎在我的应用程序中不起作用。
我已将问题确定为以下查询:
SELECT task_id, member_id, SUM(NOT(ISNULL(completion_date))) AS complete, COUNT(id) AS total
FROM classroom_task_data
GROUP BY task_id, member_id
,特别是SUM(NOT(ISNULL(completion_date)))
。
如果我将其更改为SUM(ISNULL(completion_date))
(已移除NOT
),则查询将在我的应用程序中生效。我不知道为什么会这样,但我想我也可以尝试不同的方法来获得我想要的结果。
我也试过SUM(NOT ISNULL(completion_date))
,但没有成功。我也测试了COALESCE
,但我无法让它工作。
所以我想知道如何以不同的方式写上面的内容,但仍能得到相同的结果。
这是完整的查询btw:
SELECT id, title, member_id, instruction, start_date, end_date, is_archived, is_published, classroom_id, user_id
FROM (
SELECT task_id, member_id, SUM(NOT(ISNULL(completion_date))) AS complete, COUNT(id) AS total
FROM classroom_task_data GROUP BY task_id, member_id
)
AS td
JOIN
classroom_tasks AS t ON td.task_id = t.id
WHERE complete = total AND classroom_id = 35;
答案 0 :(得分:1)
if语句会给出相同的结果。
当completion_date为空时-0
当completion_date为非空时-1
SUM( if(completion_date IS NULL, 0, 1)) AS complete
也许你可以试试
答案 1 :(得分:0)
尝试IS NOT NULL:
chan
答案 2 :(得分:0)
如果它们不为null,则将它们汇总为completion_date,否则将其添加为零。
COALESCE(SUM(completion_date),0)