我有按条件获取行的SQL查询,外部查询对行进行计数:
SELECT IdUserRecordstouser, SUM(IF(StatusRecordstouser IN('1', '0'), 1, 0)) AS NEW
FROM recordstouser
WHERE IdRecordstouser
IN (
SELECT IdRecordstouser
FROM recordstouser
WHERE IdtoUserRecordstouser =544
)
AND StatusRecordstouser = 1
问题是,如果
StatusRecordstouser = 0
我得到NULL字段:IdUserRecordstouser, NEW
,但是无论如何我都需要显示行,因为带有IdtoUserRecordstouser =544
的行存在但具有StatusRecordstouser = 0
最佳答案
如果要选择那些可能具有OR
而不管StatusRecordtouser = 1
的记录,为什么不在过滤器中使用IdtoUserRercordstouser
? (这就是您想要做的吗?)
按照编写的方式,您的子查询将返回空集({NULL}
)或单例集({544}
),具体取决于表recordstouser是否具有ID = 544的记录。AND
运算符然后将其与是否StatusRecordstouser = 0
,true AND false
的结果为false
。
顺便说一句,您应该重命名列以更简洁。
关于mysql - 如何重建SQL查询,即不会返回NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30544076/