sql在一个和SORT BY中组合了两个查询

时间:2014-01-04 13:53:53

标签: sql sqlite sorting multi-query

我有一个大表,我已经构建了两个查询,首先查询前两列然后 其他专栏。我的意图显然是将前2列数据放在顶部然后追加 其他栏目的数据如下。这是查询。

SELECT * FROM (SELECT * FROM mytable WHERE A LIKE 'query%' OR G LIKE 'query%' ORDER BY LENGTH(A) )
UNION ALL
SELECT * FROM (SELECT * FROM mytable WHERE I LIKE 'query' OR J LIKE 'query' LIMIT 15)

这样可以,但速度太慢了。有什么方法可以让它更快。因为我 感觉我正在做不必要的选择(4)。 也许我可以做类似的东西(我在Stackoverflow上看到了这个建议):

SELECT  * 
FROM 
        (
            SELECT *, 1 sortby FROM TABLE_A 
            UNION ALL 
            SELECT *, 2 sortby FROM TABLE_B
        ) dum
ORDER   BY sortby 

但我不知道如何为我的情况做这件事。

非常感谢。

2 个答案:

答案 0 :(得分:1)

是的,你是对的。您的查询中有2个不需要的选择。 这可行,但我怀疑它会有更好的表现。

SELECT * FROM mytable WHERE A LIKE 'query%' OR G LIKE 'query%' 
UNION ALL
SELECT * FROM mytable WHERE I LIKE 'query' OR J LIKE 'query' LIMIT 15
ORDER BY LENGTH(A)

答案 1 :(得分:-1)

你试试这个:

Select m1.A,m2.I from (SELECT A FROM mytable m1 WHERE A LIKE 'query%' OR G LIKE 'query%'

ORDER BY LENGTH(A)

 UNION ALL

SELECT I FROM mytable m2 WHERE I LIKE 'query' OR J LIKE 'query' LIMIT 15))
ORDER BY m1.A,m2.I