我有一个 SQLite 查询,例如:
SELECT max(e), url, branch FROM (SELECT max(T1.entry) e, T1.url, T1.branch FROM repo_history T1
WHERE (SELECT active FROM repos T2 WHERE url = T1.url AND branch = T1.branch AND project = ?1)
GROUP BY T1.url, T1.branch
UNION
SELECT null, T3.url, T3.branch FROM repos T3 WHERE active AND project = ?1 )
GROUP BY url ORDER BY e
?1
请注意,该参数出现了两次。无论如何,在某些情况下,它可以为空(None
在 python 中,据我所知,NULL
在 SQLite 中)。这是一个问题,因为我不了解 null 处理,但基本上我没有得到任何回报。
那么,我该如何处理where "project" = ?1
何时?1
为 NULL?我想避免对它进行 2 个单独的查询。我环顾四周,但我只能找到关于IS NULL
/的东西IS NOT NULL
,这对我不起作用,因为我不是要检查列是否为空或不为空,而是要检查两个可空值是否匹配,无论它们是否为空。