SQL学习笔记!

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章