SQLite:n个地方的UNION ORDER BY size连同所有的大写字母?

Posted

技术标签:

【中文标题】SQLite:n个地方的UNION ORDER BY size连同所有的大写字母?【英文标题】:SQLite: UNION of n places ORDER BY size together with all the capitals? 【发布时间】:2015-05-15 17:04:09 【问题描述】:

我尝试从ne_10m_populated_places 15 个最大的城市以及FEATURECLA='Admin-0 capital'(国家首都)的 3~5 个城市中进行选择。所以对于我所在的地区,我应该回到大约 18-20 个地方。我是 SQL 的初学者,不知道基本运算符如何链接。我试过了:

SELECT * FROM ne_10m_populated_places ORDER BY POP_MAX DESC LIMIT '15' 
OR WHERE FEATURECLA='Admin-0 capital'

第一行有效,但是当我将它添加到第二行时它失败了。欢迎帮助!


编辑:还没有有效的答案。

【问题讨论】:

【参考方案1】:

您的语句顺序不正确,如果您想添加特定结果,您需要执行UNION

在本例中,我们找到 15 个人口最多的城市,然后找到您指定的 UNION 特定城市。

UNION的第一个查询中,因为ORDER BY会影响整个UNION,所以变成了子选择。

SELECT * 
FROM (
    SELECT * 
    FROM ne_10m_populated_places
    ORDER BY POP_MAX DESC 
    LIMIT 15
)

UNION 

SELECT * 
FROM ne_10m_populated_places
WHERE FEATURECLA = 'Admin-0 capital'

【讨论】:

@Doon - 只是把它变成了一个子选择。我认为现在应该可以使用...如果您发现任何问题,请告诉我,因为我手边没有 SQLite。 打败我,我想说子选择应该工作。 (至少现在可以解析) 哇,我离它真的很远。我正在测试它。 这对我不起作用,除非为子查询分配了名称。公平地说,我正在测试 SQL Server 而不是 SQLite,它的语法略有不同(SELECT TOP 15 * 而不是底部的LIMIT 15 @Hugolpz 好吧,这不是查询的“基本”(由于仅部分结果的顺序/限制)

以上是关于SQLite:n个地方的UNION ORDER BY size连同所有的大写字母?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UNION 组合两个 SELECT 查询的 ORDER BY

UNION、TOP、ORDER BY联合使用时处理顺序是啥?

如何在 UNION 之间的 SQL 中放置 ORDER BY 子句

order by 和union all 如何共存

使用UNION后,ORDER BY 怎样使用

为啥在mysql中第一个union两个子句的order by不起作用