根据多个条件对不同的行进行排序

时间:2014-08-12 09:54:05

标签: sql sqlite

我有一个联系人表,其中有两列优先级和名称。考虑我有500个条目。我需要按照以下条件排序

  • 应该返回优先顺序和前20名。
  • 在剩余的行之后根据名称进行排序。

这可以在单个查询中实现。

1 个答案:

答案 0 :(得分:1)

您可以将多个查询与UNION结合使用。 需要额外的子查询才能使用ORDER BY / LIMIT(否则,ORDER BY将应用于UNION的整个结果)。 必须重复LIMIT 20子查询以排除第二个查询中的前20行:

SELECT *
FROM (SELECT *
      FROM Contacts
      ORDER BY priority DESC
      LIMIT 20)
UNION ALL
SELECT *
FROM (SELECT *
      FROM Contacts
      WHERE ID NOT IN (SELECT ID
                       FROM Contacts
                       ORDER BY priority DESC
                       LIMIT 20)
      ORDER BY name)
相关问题