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的论谈朋友写出来的,很复杂,还没有学懂,有空再细品。