mysql数据库编程精华案例347个(知此347个例子,便是高手矣)

1.现在有一个表如下
id     name     sign_date    class
1      张三       2012-11-13    1
2      李四       2012-11-13    1
3      王五        null                2
4      无名氏     null                2
现在想用一条sql语句查询,把学生按照class进行分组,求出学生的签到数跟签到率.

比如这个表,得出的结果应该是两个结果集,第一个是class为1的,里面包含3个信息分别是班级 签到人数 签到率{1,2,100%}第二个结果集是class为2的,{2,0,0%}

select class,count(sign_date) as 签到数,count(sign_date)/count(name) as 签到率 from table 
group by class;
2.给你的mysql加上自增列号,注意:mysql可没有那个row_number, 也没有rownum怎么办呢?看看吧,这是我在美线海运查询时的视图usipi中遇到的。
SELECT @rowNum:=@rowNum+1 rowNum,t.* FROM (SELECT @rowNum:=0,uswc.* FROM uswc) t;

但是不能用在视图中ERROR 1351 (HY000): View's SELECT contains a variable or parameter

最终语句:

SELECT @rowNum:=@rowNum+1 rowNum,t.* FROM (SELECT @rowNum:=0, I.baseport AS IBASEPORT,I.port AS IPORT,I.dest AS IDEST,I.commodity AS ICOMMODITY,I.p20gp AS IP20GP,I.p40gp AS IP40GP,I.p40hq AS IP40HQ,I.p45hq AS IP45HQ,I.etd AS IETD,I.note AS INOTE,I.tt AS ITT,D.single AS DSINGLE,D.dest AS DDEST,D.via AS DVIA,D.p20gp AS DP20GP,D.p40gp AS DP40GP,D.p40hq AS DP40HQ,D.p45hq AS DP45HQ,D.svc AS DSVC,O.carrier AS OCARRIER,O.effective AS OEFFECTIVE,O.endDate AS OENDDATE FROM usipi I LEFT JOIN usdestaddon D ON I.port=D.via LEFT JOIN usothers O ON D.single = O.single WHERE D.single = (SELECT MAX(single) FROM usothers) AND I.baseport="SHANGHAI" AND D.dest="EL PASO,TX") t

3.mysql正则表达式

匹配汉字:

SELECT * FROM news WHERE HEX(`title`) REGEXP '[[:<:]](e[4-9][0-9a-f]{4}|3[0-9]|4[0-9A-F]|5[0-9A]|6[0-9A-F]|7[0-9A]|5F)+[[:>:]]'

匹配英文:

SELECT * FROM news WHERE `title` REGEXP '[a-zA-Z]+'

匹配数字:

SELECT * FROM news WHERE `title` REGEXP '[0-9]+'





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值