日期:2014-05-19  浏览次数:20506 次

今天把我刚开始接触sql的简单事例总结了一下,全是从以前收藏的帖子翻出来的,供初学者来学习,希望能有所帮助,有空会继续总结
事例一:排序

ORDER   BY子句可包括未出现在此选择列表的项目.然而,如果指定SELECT   DISTINCT,则排序列必定出现在选择列表中.

错误的语句:SELECT   DISTINCT   书名   FROM   tb_BookStore   ORDER   BY   现存数量

正确的语句:SELECT   DISTINCT   (书名),现存数量   FROM   tb_BookStore   ORDER   BY   现存数量

(2)

gold是等级       expire_date是到期时间      
       
根据前面的查询是按等级后再按到期时间,这样的话高等级的过期的人就在低等级没过期的人的前面.      
       
现在要做成       过期的都要到后面显示       无论等级是多少       而没过期的还是正常按等级及到期时间排列      

Create       Table       #TEST      
    (ID       Int,      
        gold   Int,      
        expire_date   DateTime)      
    Insert       #TEST       Select       1,2, '2006-06-30 '      
    Union       All       Select       2,3, '2006-06-30 '      
    Union       All       Select       3,5, '2006-05-30 '      
    Union       All       Select       4,6, '2006-06-12 '      
    Union       All       Select       5,10, '2006-07-30 '      
    Union       All       Select       6,1, '2006-08-30 '      
    Union       All       Select       6,1, '2008-08-30 '    
    Union       All       Select       6,1, '2009-08-30 '    

select       top       100       *       from       [#TEST]       order       by       (Case       When       expire_date> =GetDate()       Then     0       Else     1     End),       gold       desc,expire_date       desc      


事例2:charindex

B=(1,11,2,22,3)

select       *       from       table       where          
charindex( ',1, ', ', '+B+ ', ')> 0       or       charindex( ',2, ', ', '+B+ ', ')> 0      
or       charindex( ',3, ', ', '+B+ ', ')> 0

(2)

    INSERT       @t       SELECT       '消费电子 '      
    UNION       ALL       SELECT       '消费电子       '      
    UNION       ALL       SELECT     &nbs