我在iOS中的SQLite中进行查询,有时返回0行。它有什么错误吗?
SELECT mcon.MessageDictKey,
mcon.EMail,
con.Name,
con.ShowOnLists,
mcon.ContactType
FROM MessageContacts AS mcon
LEFT JOIN Contacts AS con ON mcon.EMail=con.EMail
WHERE mcon.MessageDictKey='5-131'
AND mcon.ContactType=0
答案 0 :(得分:1)
我相信你的查询是相反的。我相信你想从Contacts和LEFT JOIN到MessageContacts中选择什么。您总是希望联系回来,即使他们没有任何消息。你的查询是说“我总是想要消息,即使他们没有联系人”这是倒退的。
SELECT mcon.MessageDictKey,
mcon.EMail,
con.Name,
con.ShowOnLists,
mcon.ContactType
FROM Contacts AS con
LEFT JOIN MessageContacts AS mcon ON mcon.EMail=con.EMail AND mcon.MessageDictKey='5-131' AND mcon.ContactType=0
我还将WHERE子句移动到ON语句。将它放在WHERE中基本上会导致LEFT JOIN充当INNER JOIN(因为不匹配的记录将被强制传递WHERE子句的值)。
如果这不是您想要的,请告诉我,我将删除我的答案。我无法在评论中准确地传达所有这些,所以我将其作为答案提交。