我正在使用Android Studio Room数据库查询一些复杂的作品,我最初的SQLite查询语句是这样的:
SELECT DISTINCT mainCol as main, secondCol as sum FROM ADB WHERE
(mainCol LIKE 'A1%' OR mainCol LIKE 'A2%' OR mainCol LIKE 'A3%') AND
(secondCol LIKE 'B1%' OR secondCol LIKE 'B2%' OR secondCol LIKE 'B3%' )
ORDER BY dbtime DESC
RoomDAO建议使用List,因此我按如下方式执行此操作。
在DAO中
@Query
("SELECT DISTINCT mainCol as main, secondCol as sum FROM ADB WHERE" +
" mainCol LIKE :rOne AND" +
" secondCol LIKE :rTwo" +
" ORDER BY dbtime DESC")
public Map<String,String> getCompare(List<String> rOne, List<String> rTwo);
但它响应了这样的错误
从ADB中选择不同的mainCol作为主列,选择不同的secondCol作为总和,其中mainCol Like?,?,?AND secondCol Like?,?,?ORDER BY dbtime DESC
当然这是个错误的句子。
有什么好的答案来解决我的问题吗?
谢谢
我试过用我原来的命令按房间查询,但没有结果。我只尝试了一个值为每个,有正确的结果,但只有一个结果。我想查询多个值和使用“或”,我在这里挣扎。
1条答案
按热度按时间jpfvwuh41#
如果你使用List,那么它只是将值转换成逗号分隔的值列表,然后转换成?,以便SQLite绑定这些值,因此
?,?,?
(* 适合在IN ()
子句中使用 *)。在你的情况下,你希望在整个SQL中放置单独的值。因此类似于:-