我有按条件获取行的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 = 0true AND false的结果为false

顺便说一句,您应该重命名列以更简洁。

关于mysql - 如何重建SQL查询,即不会返回NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30544076/

10-14 15:02