场景:根据运营需求,譬如我们 规定 在 某2天内,凡是消费的客户给予 消费金额的10%作为积分奖励,以最大的一天为准,不累加 。update users_score a INNER JOIN (select max(paymoney) as mp,user_name from users_buy group by user_name ) b on a.user_name=b.user
场景:查询出 图书和食品两个分类(或多个分类) 在最新的一天内的商品销售情况 select a.* from prod_sales a INNER JOIN(select prod_class,max(sales_date) as sn from prod_salesGROUP BY prod_class) b on a.prod_class=b.prod_class and
场景:有时候我们在网站中要 假模假样的 做一些签到功能。让用户可以天天来点一次网站,以增加我们网站的活跃率。那么其中一个功能是:统计出连续签到X天的用户。然后对他们进行排行或者假模假样的奖励计算 相邻两行的 日期是否 相差一天就可以。mysql的函数 datediff(date1,date2)返回两个日期之间的天数 注意是 date1-date2select user_name,sign_date
场景:有时候我们需要在网站中实现排行榜,譬如用户消费排行、商品销量排行、新闻点击排行等。排行数据免不了要真假掺半,结合表我们的需求是:1、根据字段 user_total倒排序2、其中id为2,4,6的用户为我们“内部用户”,要直挺挺的置顶select * from user_level order by id in(4,6,2) and id<>2 desc
场景:系统运行了一段时间后,好多用户消费,需要在表中对用户进行等级更新,我们的需求是:1、只对超过平均消费金额的用户进行等级升级2、达到平均消费金额 1倍的用户 等级是 白金用户3、2倍或以上的是黄金用户4、其他一律是吃瓜用户mysql 里面的case when:case when 表达式 then表达式 else 表达式 end 
场景譬如管理员后台1、编辑在后台手工添加新闻2、或者用爬虫抓到新闻后插入由于一些不可描述的原因。我们可能需要会插入相同的新闻我们利用news_code字段。在程序(PHP ,java)拼凑SQL语句时,执行一个md5 过程,让news_code值=md5(标题的内容+摘要的内容).我们使用sql来表示insert into news(news_title,news_abstract,news_co
根据处理方式不同:select a.*,if(@tmp=CONCAT(r_content,r_userid),@rownum:=@rownum+1,@rownum:=1) as rownum,@tmp:=CONCAT(r_content,r_userid) from (select a.* from reviews a INNER JOIN (select r_content,r_us
1、譬如我们要做个用户激励注册 (或者类似"传销系统" ~_~)2、用户注册时可以填 “推荐人”于是我们很可能会有个需求:查询出,注册用户的推荐人。(说不定要给奖励或分成哦~~~~)GROUP_CONCAT通常和group by 一起使用,把相同的分组的字段值连接起来select a.users,b.u_name from (select GROUP_CONCAT(u_name,u_id orde
分别把 计算各自的 1、点击量/点击量均值 2、销售量/销售量均值 两者相加,可以得到一个简单评分 又有问题了,猪肉的评分不应该比五花肉多。 因此我们要加入简单的权重,譬如点击量评分占30%。销售量评分占70%select p_type,p_name, (p_view/view_avg)*0.3+(sales/sales_av
IFNULL(expr1,expr2) expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2select p_name,p_type,p_view, IFNULL(@rownum:=@rownum+1,@rownum:=1) from products a ORD
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号