如何解决Android Room:查询未返回带有联接的所有行
我有两个表-表a和表b。在表a中,我有20列,其中10列连接到表b。这样做的原因是用户可以选择不能存储在表中一个单元格/行/列中的多个值,因此需要将其标准化到自己的表中。我在检索数据时遇到问题。如果表a和b中都存在数据,则使用im查询仅返回结果。但是我的用例允许用户仅在表a中具有数据。无论表b中没有数据,我都需要修改查询以返回该行中存在的任何数据。
这是我查询的精简版(不需要全部20列)
SELECT
tableA.id,tableA.currentSituation,tableA.moodStart,tableA.automaticThought1,tableB.id,tableB.allOrNothing,tableB.blamingOthers,tableB.catastrophizing,FROM tableA
JOIN tableB
ON tableA.id = tableB.tableAid
ORDER BY tableA.currentSituation
DESC
任何修改此查询以返回所有存在的行/数据的帮助,无论表b中是否存在任何数据,都将不胜感激。
解决方法
你好吗?我看到两个错误来更正您的脚本:首先在脚本中添加“ SELECT”一词,然后将“ JOIN”更改为“ LEFT OUTER JOIN”:
SELECT tableA.id,tableA.currentSituation,tableA.moodStart,tableA.automaticThought1,tableB.id,tableB.allOrNothing,tableB.blamingOthers,tableB.catastrophizing,FROM tableA
LEFT JOIN tableB
ON tableA.id = tableB.tableAid
ORDER BY tableA.currentSituation
DESC;
,
LEFT JOIN关键字返回左表[tableA]中的所有记录,并返回右表[tableB]中的匹配记录。如果不匹配,则结果从右侧为NULL。
来自https://www.w3schools.com/sql/sql_join_left.asp
我认为LEFT JOIN是您想要的。但是,由于tableB条目可能不存在,因此您需要检查null。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。