我有一个联系人表,其中有两列优先级和名称。考虑我有500个条目。我需要按照以下条件排序
这可以在单个查询中实现。
答案 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)