Mysql 选择isnull()为false的列
我有一个查询,当我直接通过MySQL管理器运行它时,它可以工作,但是这个查询在我的应用程序中似乎不起作用 我已将问题确定为以下查询:Mysql 选择isnull()为false的列,mysql,Mysql,我有一个查询,当我直接通过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 特别是总和(不是(ISNULL(完成日期)) 如果我将其更改为SUM(I
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
特别是总和(不是(ISNULL(完成日期))
如果我将其更改为SUM(ISNULL(completion\u date))
(删除而不是),则查询将在我的应用程序中工作。我不知道为什么会发生这种情况,但我想我不妨尝试一种不同的方法来获得我想要的结果
我也尝试了SUM(不是ISNULL(完成日期))
,但没有成功。我还测试了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;
Try不为空:
SUM( completion_date IS NOT NULL )
如果完成日期不为空,则此值将与完成日期之和相加,否则将与零相加
COALESCE(SUM(completion_date),0)
if语句将给出相同的结果
-完成日期为空时为0
-1当完成日期不为空时
SUM( if(completion_date IS NULL, 0, 1)) AS complete
也许你可以试一下什么不起作用?语法错误?结果不正确?还是怎样你的桌子结构怎么样?也许完成日期定义被设置为非空?任何将此问题设置为关闭的人显然不理解我的问题。我不是问为什么这段代码不起作用,而是问除了编写notisnull()
之外是否还有其他选择。。。。