addtime -- 添加時間
userid -- 外鍵
select top 10 title from t where addtime in (select max(addtime) from t group by userid)
參考網址:
http://zhidao.baidu.com/link?url=-H1FS4dw5QTSpQQnaLTBvpIh1lgag4e6jabw2bIk7ZpTYM7n3PYl93Dhes4w3HVoOIbAvAIOcVu5RMIrBwmcwq
// 2014-08-20 update
// 獲取某個分類下固定條數的記錄,支持排序
// 文章表 art_art, 分類字段clsid
// 2015-02-09
SQL 全文索引相關 contains(), freetext() 語法
https://msdn.microsoft.com/en-us/library/ms187787.aspx
SQL in 排序
select id, job_id, username, true_name as name, course, face_image as face, sort_id
from [TABLE_NAME]
where job_id in (1,10,11,12,13,14,2394) order by charindex(',' + rtrim(cast(job_id as varchar(10))) + ',', ',1,10,11,12,13,14,2394,'), sort_id asc;
數據按照in內部的ID排序 而不是默認的混亂的排序。
最後的 sort_id asc 會進行二次排序,結果如下:(job_id安裝括號內順序,sort_id按照 asc 升序)
// 2016-04-03
// 在SQL Select 語句中使用 case when then 語句 自定義輸出內容
// 2016-05-10
// SQL 中的 intersect 用法
在一個多對多的關係表中, 假設有 產品表 PRD, 屬性表ATTR, 關係表 RELS
RELS表中結構 PID | AID
現在需要讀取AID 既包含 = 1 又包含 = 2 的產品ID, 單純的IN 是一種或OR的關係, 這裏需要且AND的關係, 所以先讀取=1的然後再讀取=2的, 再取交集即可
語句如下:
select id, name from PRD where id in ( select pid from rels where aid = 1 intersect select pid from rels where aid = 2 )
關於SQL Server將一列的多行內容拼接成一行的問題討論 (轉)
昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的數據,最後問題出在我想將一個表的一個列的多行內容拼接成一行,比如表中有兩列數據 :
類別 | 名稱 |
---|---|
AAA | 企業1 |
AAA | 企業2 |
AAA | 企業3 |
BBB | 企業4 |
BBB | 企業5 |
我想把這個表變成如下格式:
類別 | 名稱 |
---|---|
AAA | 企業1,企業2,企業3 |
BBB | 企業4,企業5 |
一開始挺頭疼的(會了的肯定沒有這種感覺,不會那必須是頭疼啊(*^__^*) ),從網上找了點資料,算是找到一種比較簡單方便的方法吧,現在大體總結一下,供大家共同學習。
原先的表名爲Table_A,實現代碼如下:
select 類別, 名稱 = ( stuff( (select ',' + 名稱 from Table_A where 類別 = A.類別 for xml path('')), 1, 1, '' ) ) from Table_A as A group by 類別