sql子查询,多重查询,join,左连接,右连接,内连接

范围内重复数量查询

根据上表查询 每个手机号都各有多少个重复的设备id

SELECT t.phone_num,COUNT(*) FROM 
(select phone_num, device_id,count(id) from d1_login_log group by phone_num,device_id ) as t 
GROUP BY t.phone_num;

经过前辈指导,优化了一下上面代码,并且在推荐一本《SQL必知必会》一本书

SELECT phone_num,count(distinct device_id) num from d1_login_log GROUP BY phone_num

-----------下面是子查询相关内容-------------

这里子查询替代了order的作用。当然,实际上没必要这么做,效率低。(子查询当主查询的条件)

SELECT * FROM xxl_event2017 WHERE addtime = (SELECT MAX(addtime) FROM xxl_event2017)

查询数据多于2条的分类,获取该分类的id,再次使用该id查询所有数据。如有命令不清楚可查阅我另外博文有详细介绍。

SELECT typeid,COUNT(*) as num FROM xxl_event2017 GROUP BY typeid HAVING num>2
SELECT typeid FROM (SELECT typeid,COUNT(*) as num FROM xxl_event2017 GROUP BY typeid HAVING num>2) as t
SELECT id,contacts,tel,typeid FROM xxl_event2017 WHERE typeid IN (SELECT typeid FROM (SELECT typeid,COUNT(*) as num FROM xxl_event2017 GROUP BY typeid HAVING num>2) as t)

第一条查询结果:

141216_pTW6_3538113.png

第二条查询结果:

141245_clJb_3538113.png

第三条查询结果:

141355_MzFi_3538113.png

左连接:注意field部分重叠处需要点名是哪个表的。

SELECT a.itemid,title,content FROM xxl_sell_5 a 
LEFT JOIN xxl_sell_data_5 b ON a.itemid = b.itemid WHERE typeid=0 

如下图,itemid存在于a,b表中,使用itemid绑定来查询对应的b表的content。右连接同理。

144123_YxKe_3538113.png

INNER JOIN,内连接。

内连接仅有交集的数据。如itemid在a表有1,2,3,4。b表有3,4,5,6查询时仅会出现3,4的内容。

自行尝试,就不提供例子了。。

觉得有用求给个赞 - -

 

转载于:https://my.oschina.net/u/3538113/blog/1571023

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值