我正在尝试对符合特定条件的记录进行计数,其中包括一个字段为null,但是包含null子句将导致找不到记录。
如果我输出该字段的内容,它将返回为“(null)”。我尝试过IS NULL和ISNULL,这两种方法在查看其他资源时似乎都应该起作用,但是它们对我都失败了。
SELECT calls.contact_number, calls.contact_name, COUNT(notes.id) AS note_count
FROM calls LEFT JOIN notes on calls.id = notes.call_id
WHERE calls.contact_number = "123" AND notes.group_id ISNULL
GROUP BY calls.contact_number
这不返回任何记录,而我希望它返回一个。
答案 0 :(得分:1)
在ON子句中移动条件:
SELECT calls.contact_number, calls.contact_name, COUNT(notes.id) AS note_count
FROM calls LEFT JOIN notes
ON calls.id = notes.call_id AND notes.group_id IS NULL
WHERE calls.contact_number = "123"
GROUP BY calls.contact_number, calls.contact_name
答案 1 :(得分:0)
获取数据库副本后,notes.group_id字段被确定为整数类型,并且相关记录实际上包含0。
成功的查询最终被
SELECT calls.contact_number, calls.contact_name, COUNT(notes.id) as note_count
FROM calls LEFT JOIN notes
ON calls.id = notes.call_id
WHERE calls.contact_number = “123” AND (notes.group_id IS NULL OR notes.group_id = 0)
GROUP BY calls.contact_number
不知道为什么group_id的返回值的NSLog输出为“(null)”,有些奇怪的转换?