SQLite如何在目标C中包括NULL的记录?

时间:2019-08-29 08:28:29

标签: sqlite

我正在尝试对符合特定条件的记录进行计数,其中包括一个字段为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

这不返回任何记录,而我希望它返回一个。

2 个答案:

答案 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)”,有些奇怪的转换?