SELECT *
FROM [TABLENAME]
WHERE (ID IN
(SELECT TOP [頁容量] ID
FROM [TABLENAME]
WHERE ID IN
(SELECT TOP 頁容量*頁數 ID
FROM [TABLENAME])
ORDER BY ID DESC))
這個是SQL的一種分頁方法!
SELECT TOP 20 *
FROM Part
ORDER BY NEWID()
這個是從數據庫中隨機的取出20條記錄!
補充:
要實現隨機取記錄,請看:
Sql server:
select top 20 * from 表 order by newid()
Access:
SELECT top 20 * FROM 表 ORDER BY Rnd(id)
Rnd(id) 其中的id是自動編號字段,可以利用其他任何數值來完成
比如用姓名字段(UserName)
SELECT top 20 * FROM 表 ORDER BY Rnd(len(UserName))
MySql:
Select * From 表 Order By rand() Limit 20
查找並顯示重複了的記錄,沒有重複的不顯示!
SELECT *
FROM test
WHERE (name IN
(SELECT name
FROM test
GROUP BY name
HAVING (COUNT(*) > 1)))
ORDER BY name
又一個比較經典的SQL語句,作者花了不少心思,語句也寫得非常復
表 T1
A B
11 b1
11 b2
11 b3
11 b4
12 b1
12 b2
12 b3
13 b1
13 b2
13 b3
13 b4
13 b5
結果:
11 b1 b2 b3
11 b4
12 b1 b2 b3
13 b1 b2 b3
13 b4 b5
存入表T2
按相同的 T1.A 分開, T1.B 按順序一次放入T2的三個字段中。一條語句處理。
原來需要這個結果的發帖人,只是想改變數據的存放方式。
其實結果並不是很重要的,重要的是如何實現這個過程。
SELECT A, MAX(CASE a.Num % 3 WHEN 0 THEN a.B END) AS B1,
MAX(CASE a.Num % 3 WHEN 1 THEN a.B END) AS B2,
MAX(CASE a.Num % 3 WHEN 2 THEN a.B END) AS B3
FROM (SELECT T1.A, T1.B,
(SELECT COUNT(*)
FROM T1 a
WHERE A = T1.A AND B < T1.B) Num
FROM T1) a
GROUP BY A, Num / 3
ORDER BY A, Num / 3
語句是看到別人的啓發寫出來的,同時也讓我瞭解了一些原理,比如
GROUP BY Num / 3 與 GROUP BY Num 的區別。
這個是來自Leadbbs的論談朋友寫出來的,很複雜,還沒有學懂,有空再細品。