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的論談朋友寫出來的,很複雜,還沒有學懂,有空再細品。

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