Android Sqlite查询联合所有
下面是我的查询代码,我目前只传递了100条记录的DB表中存在的8个产品的IDAndroid Sqlite查询联合所有,android,sqlite,Android,Sqlite,下面是我的查询代码,我目前只传递了100条记录的DB表中存在的8个产品的ID String query = "SELECT productId IN (" + makePlaceholders(ids.length)+"),"+ " * FROM " + tableName + " WHERE type LIKE 'percent'" + " UNION ALL " + "SELECT
String query = "SELECT productId IN (" + makePlaceholders(ids.length)+"),"+ " * FROM " + tableName + " WHERE type LIKE 'percent'"
+ " UNION ALL "
+ "SELECT productId IN (" + makePlaceholders(ids.length)+"),"+ " * FROM " + tableName + " WHERE type LIKE 'currency' ORDER BY cash DESC";
cursor = dataBase.rawQuery(query, ids);
我的问题是,它使用IN
子句显示所有记录(即全部100条记录),而不是仅显示我从ID传递的8条记录。
我希望这8条记录(或更多在函数中传递的记录)以现金显示ORDER
现在我应该如何编写这个查询来实现我的目标
编辑:
为此,我只使用了一个表。我从未见过这样的sql:
SELECT productId IN (..) from ... where ....
我希望看到
SELECT productId from ... where productId IN (..) and ....
将
中的移动到WHERE
子句,如下所示
String query = "SELECT * FROM " + tableName + " WHERE type LIKE 'percent' AND " productId IN (" + makePlaceholders(ids.length)+"),"+ "
+ " UNION ALL "
+ "SELECT * FROM " + tableName + " WHERE type LIKE 'currency' AND productId IN (" + makePlaceholders(ids.length)+"),"+ " ORDER BY cash DESC";
cursor = dataBase.rawQuery(query, ids);
简单地说:你根本不懂SQL在(…)中选择productId
什么<代码>键入类似“百分比”
(如果不使用通配符,则无需键入类似的)我不会使用联合所有的(顺便说一句,它也包括重复项),而是使用“从“+tableName+”中选择*,其中键入('percent'、'category')和productId IN(“+makePlaceholders(ids.length)+”)
我建议的查询是否有效?只是出于好奇。@DerGol…你上次回答的问题帮助了我。这里的问题没有解决,所以我只是用代码完成了全部工作,而不是从DB完成。伙计,这只返回3条记录扫描您确认您要查找的8条记录的类型列等于百分比(因为您的like
语句中没有通配符)在第一个表中,在第二个表中,键入
等于
货币
?也许发布一些示例数据会有所帮助。这只是一个无法从您的问题中辨别出来的表。在完成您所说的操作后,我收到以下消息:按术语排列的第一个订单与结果集中的任何列都不匹配。