在android中使用UNION ALL时如何对特定语句使用order by

Posted

技术标签:

【中文标题】在android中使用UNION ALL时如何对特定语句使用order by【英文标题】:How to use order by for particular statement while using UNION ALL in android 【发布时间】:2013-06-03 13:25:59 【问题描述】:

我只想在使用UNION ALL 条件时仅订购第二条SELECT 语句。我将查询写为:

db.rawQuery("SELECT _id, product_code, product_name, product_category,discount, in_stock, price, brand 
    FROM ProductDetails 
    WHERE _id || ' ' || product_name || product_code 
    LIKE ? 
    UNION ALL SELECT _id, product_code, product_name, product_category,discount, in_stock, price, brand 
    FROM ProductDetails WHERE _id || ' ' || product_name || product_code 
    NOT LIKE ? ORDER BY brand ", new String[]  "%" +searchValue+ "%","%" +searchValue+");

上面的查询是排序总的Union语句。

谁能告诉我如何只对第二条SELECT 语句进行排序?

【问题讨论】:

【参考方案1】:

不确定这是否适用于 SQLite,但值得一试:

SELECT _id, product_code, product_name, product_category,discount, in_stock, price, brand 
FROM ProductDetails 
WHERE _id || ' ' || product_name || product_code 
LIKE ? 
UNION ALL SELECT * FROM (SELECT _id, product_code, product_name, product_category,discount, in_stock, price, brand 
FROM ProductDetails WHERE _id || ' ' || product_name || product_code 
NOT LIKE ? ORDER BY brand)

如果这不起作用,您可以进行两个单独的 SQL 查询并在 java 中合并它们。

【讨论】:

【参考方案2】:

尝试用括号分隔第二个 SELECT:

UNION ALL (SELECT _id, product_code, product_name, product_category,discount, in_stock, price, brand 
    FROM ProductDetails WHERE _id || ' ' || product_name || product_code 
    NOT LIKE ? ORDER BY brand)

【讨论】:

以上是关于在android中使用UNION ALL时如何对特定语句使用order by的主要内容,如果未能解决你的问题,请参考以下文章

当我的视图包含 UNION ALL 时,如何让 Oracle 使用索引?

union 与 union all 的表现

如何在 LINQ 中使用 union all?

如何将 UNION ALL 查询的结果显示为链接?

如何在 union all 中使用 order by

在 NZSQL 中使用 union all 限制时出错