這是我的數據。我想採用6行,但我希望所有HeadlineCategoryId
在我的結果列表中都是唯一的。如果我選擇前6名,我會從HeadlineCategoryID
20(6,2)中取2排。你有什麼建議嗎?
回答
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT HeadlineCategoryID, MAX(Creation) max_date
FROM TableName
GROUP BY HeadlineCategoryID
) b ON a.HeadlineCategoryID = b.HeadlineCategoryID AND
a.Creation = b.max_date
ORDER BY a.Creation DESC -- << specify here how are you going to sort
LIMIT 6 -- the records you want to get
更新1
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT HeadlineCategoryID, MAX(NewsID) max_id
FROM TableName
GROUP BY HeadlineCategoryID
) b ON a.HeadlineCategoryID = b.HeadlineCategoryID AND
a.NewsID = b.max_id
ORDER BY a.Creation DESC -- << specify here how are you going to sort
LIMIT 6 -- the records you want to get
我也厭倦了您的查詢,但它與Gordon的答案是相同的結果。 – cagin 2013-05-07 13:55:38
由於'Creation'是相同的,請嘗試使用'NewdID'來更改它。我會更新答案。 – 2013-05-07 13:57:11
再試一次...... – 2013-05-07 13:57:54
它看起來像你想的六個最近的記錄,但HeadlineCategoryId獨特。如果是這樣,這將工作:
select top 6 NewsId, Creation, HeadlineCategoryId
from (select t.*,
row_number() over (partition by HeadlineCategoryId order by Creation desc) as seqnum
from t
) t
where seqnum = 1
作爲一個說明。 。 。這個問題最初表明它使用的是SQL Server,而不是MySQL。 MySQL中的解決方案並不那麼簡單。這裏有一個方法與not exists
:
select NewsId, Creation, HeadlineCategoryId
from t
where not exists (select 1
from t t2
where t2.HeadlineCategoryId = t.HeadlineCategoryId and
t2.id < t.id)
limit 6
的not exists
部分說:「那裏沒有其他記錄與給定標題類別更大的ID」。
- 1. 訂購mysql查詢?
- 2. 訂購查詢
- 3. 如何按範圍訂購MySQL查詢?
- 4. 如何在MySQL中訂購子查詢?
- 5. 複雜的MySQL查詢網上訂購
- 6. SQL查詢訂購
- 7. 如何通過另一個查詢來訂購MYSQL查詢?
- 8. Linqbuilder查詢與訂購BY
- 9. JDO查詢訂購問題
- 10. 如何訂購此查詢?
- 11. ActiveRecord的查詢訂購
- 12. 按成本訂購查詢
- 13. 訂購前十名查詢
- 14. sql訂購colums查詢
- 15. 從ASC訂購到DESC訂單的MySQL子查詢
- 16. 訂單在Mongoid查詢失敗訂購
- 17. 名稱訂購Mysql
- 18. 訂購MySQL結果
- 19. MySQL記錄訂購
- 20. MYSQL訂購數組
- 21. Mysql分組/訂購
- 22. MySQL的訂購查詢 - 進一步的問題
- 23. 進一步改進MySql查詢結果訂購
- 24. 訂購一個MySQL查詢按字母順序
- 25. 如何訂購具有Get方法的mySql查詢?
- 26. mysql準備了語句參數和訂購查詢
- 27. 訂購一個MySQL查詢結果基於日期
- 28. 訂購一個MySQL查詢與聯接和團體
- 29. 使用PHP在MongoDB查詢中訂購
- 30. 如何訂購已下令子查詢
真的是你使用哪個服務器? MySQL或SQL服務器?如果你拿到前6,它會返回兩個'20',你想得到什麼記錄? '2'還是'6'? – 2013-05-07 13:42:38
@JW웃你可以明白我的問題的標題我使用MySQL ......我不想讓2條記錄的20 – cagin 2013-05-07 13:44:20
什麼決定你想要的NewSID的/創建的副本headlinecategoryids? – ysth 2013-05-07 13:57:29