我有两个查询给我结果。
我想要实现的是将第一个查询的结果放在顶部(作为第一个值),然后是第二个查询的结果,那么确切的结果将首先出现(Inlagg.Categori = 'testcategory'
) ,然后如果LIKE 'testcategory%'
显示更多结果,则按照类别数量对它们进行排序。
如何将这些查询匹配在一起?
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount' FROM Inlagg
WHERE Inlagg.Date > '2015-04-26' AND Inlagg.Categori = 'testcatego'
GROUP BY Inlagg.Categori, Inlagg.Date
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount' FROM Inlagg
WHERE Inlagg.DatE > '2015-04-26' AND Inlagg.Kategori LIKE 'testcatego%'
GROUP BY Inlagg.Categori, Inlagg.Date
ORDER BY amount DESC
答案 0 :(得分:2)
由于Parado的回答是正确的,你需要ORDER BY amount DESC
我建议你这个查询
SELECT *
FROM (
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount', '0' As Ord
FROM Inlagg
WHERE Inlagg.Date > '2015-04-26' AND Inlagg.Categori = 'testcatego'
GROUP BY Inlagg.Categori, Inlagg.Date
UNION ALL
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount', '1' As ord
FROM Inlagg
WHERE Inlagg.Datum > '2015-04-26' AND Inlagg.Kategori LIKE 'testcatego%'
GROUP BY Inlagg.Categori, Inlagg.Date ) DT
ORDER BY ord, amount DESC
技巧: ord 会保留查询编号。
答案 1 :(得分:1)
尝试使用UNION ALL
,如下所示
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount' FROM Inlagg
WHERE Inlagg.Date > '2015-04-26' AND Inlagg.Categori = 'testcatego'
GROUP BY Inlagg.Categori, Inlagg.Date
UNION ALL
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount' FROM Inlagg
WHERE Inlagg.Datum > '2015-04-26' AND Inlagg.Kategori LIKE 'testcatego%'
GROUP BY Inlagg.Categori, Inlagg.Date
答案 2 :(得分:0)
只需编写一个简单的查询并将testcat排在最前面:
SELECT Inlagg.Categori, COUNT(Inlagg.Categori) AS 'amount', '1' As ord
FROM Inlagg
WHERE Inlagg.Datum > '2015-04-26' AND Inlagg.Categori LIKE 'testcatego%'
GROUP BY Inlagg.Categori, Inlagg.Date
ORDER BY CASE WHEN Inlagg.Categori = 'testcatego' THEN 1 ELSE 2 END,
Inlagg.Date
案例检查Categori是否相等并将其翻译为1.否则为2.