以下是我的查询代码,其中我目前只传递了8个产品的ID,这些产品存在于100个记录的数据库表中。
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);
我的问题是,它显示了所有记录(即所有100条记录),而不仅仅是我使用IN
子句从ID传递的那8条记录。
我希望这8条记录(或者在函数中传递的更多记录)以现金显示ORDER
。
现在我应该如何编写此查询以实现我的目标。
修改 我只为此目的使用一张桌子。
答案 0 :(得分:2)
我从未见过像这样的SQL:
SELECT productId IN (..) from ... where ....
我希望看到
SELECT productId from ... where productId IN (..) and ....
答案 1 :(得分:0)
将IN
移至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);