程序外包网站,字体设计logo免费,vpswindows野外大全,建设部的网站首页1. 二级分组需求
先按照一个字段分组#xff0c;在按照 第二个字段分组。之后#xff0c;如果 这个 二级分组中的数据#xff0c;是 1条的。就筛选出来。
比如#xff1a; 先按照 站点分组#xff0c;再按照 设备分组#xff0c; 即#xff1a;如果站点上配置了…1. 二级分组需求
先按照一个字段分组在按照 第二个字段分组。之后如果 这个 二级分组中的数据是 1条的。就筛选出来。
比如 先按照 站点分组再按照 设备分组 即如果站点上配置了2个设备。就筛选出来。 然后这2个设备 都必须是屏幕 查出配置了2个设备的站点
SELECTe2.station,e2.device
FROMesb_config e2
GROUP BYe2.station
HAVINGcount( 1 ) 1要求 这两个设备都是屏幕参考SQL和思路1
错误写法 SELECTe2.station,e2.device FROMesb_config e2GROUP BY e2.station,e2.device HAVING count(*) 1 -- 这样是错误的这样是根据2个字段 分组。结果不会存在 1的情况GROUP BY e2.station HAVING count(e2.device) 1
-- 这样写无异议 等于 HAVING count(e2.station) 1也是错误的GROUP BY e2.station
-- 核心是这样查询后会随机带出 一个device。
-- 所以哪怕 外层在套一个分组因为经过一层后已经选出了一个device了也是错的。问题从头整理
表结构和数据
CREATE TABLE user (id int NOT NULL,username varchar(22) DEFAULT NULL,info varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8;1 zhangsan 1
2 lisi 22
3 lisi 33-- 我们要查出lisi
-- 先按照姓名分组在按照 info 分组。
-- info中的 数据1就查询出来collate
英
/kəˈleɪt/
vt.
核对校对校勘按照username分组
SELECT *
FROM user
GROUP BY username-- 按照username分组后lisi会随机选一条第一条
1 zhangsan 1
2 lisi 22加入扰乱数据
INSERT INTO user(id, username, info) VALUES (4, zhangsan, 1);
-- 此时数据的数据为
1 zhangsan 1
2 lisi 22
3 lisi 33
4 zhangsan 1加条件
SELECT *
FROM user
GROUP BY username
HAVING count(username) 1-- 结果为此时zhangsan是info相同的不应该出现。count(1)或 count(其他值) 结果都一样
1 zhangsan 1
2 lisi 22两个字段分组 加条件
分3组
-- 此时数据的数据为
1 zhangsan 1
2 lisi 22
3 lisi 33
4 zhangsan 1SELECT *
FROM user
GROUP BY username,info-- 根据 两个字段分组后变成3组
1 zhangsan 1
2 lisi 22
3 lisi 33此时分组中的数据 1的为 zhangsan
SELECT *
FROM user
GROUP BY username,info
HAVING count(1) 1-- 结果
1 zhangsan 12. 业务
真实的问题 业务要求了必须是 一个站点绑定两个设备都是屏幕才查询出来。 无用的SQL保存验证这个真实的设备是不是 屏幕
SELECT*
FROMdevice d,device_type dt
WHEREd.deviceType dt.id AND d.id e696cfeeb4568ccfcda0ae6787388760 AND dt.attribute 屏幕先 where在 having
where语句的执行顺序先于group bygroup by语句的执行顺序先于having having 子句中的每一个元素也必须出现在select列表中having语句可以使用聚合函数。
SQL和实现思路1 窗口函数
SELECT*
FROM(SELECTe2.station,ROW_NUMBER() OVER ( PARTITION BY e2.station ) row_num FROMesb_config e2,device d,device_type dt WHEREd.deviceType dt.id AND dt.attribute 屏幕 AND e2.device d.id ) t1
WHEREt1.row_num 1-- 窗口函数 再次赋值
SELECT*
FROM(SELECTe2.station,ROW_NUMBER() OVER ( PARTITION BY e2.station ) row_num FROMesb_config e2) t1
WHEREt1.row_num 1SQL和实现思路2 分组
查出 站点配置了 多个设备的 站点
SELECTe2.station,e2.device
FROMesb_config e2
GROUP BYe2.station
HAVINGcount( 1 ) 1这多个设备 必须是屏幕才能查出来。 对站点进行了分组
SELECTe2.station,e2.device
FROMesb_config e2,device d,device_type dt
WHEREd.deviceType dt.id AND dt.attribute 屏幕 AND e2.device d.id
-- 上面SQL 查出了配置表中所有为屏幕的 设备和站点
-- 此时一个站点 如果配置了 多个屏幕这个站点就会展示出多条-- 然后在筛选一下站点1 的
GROUP BYe2.station
HAVINGcount( 1 ) 1扩展怎么显示 一个站点显示2次呢 思路1再关联原表 使用这个逻辑有一个问题。怎么显示 一个站点显示2次呢设备不同的时候 很简单只需要在 外层关联一个 表即可因为这个表 本来就是这种逻辑一个站点显示2次
SELECT * from esb_config e1, (SELECTe2.station FROMesb_config e2,device d,device_type dt WHEREd.deviceType dt.id AND dt.attribute 屏幕 AND e2.device d.id GROUP BYe2.station HAVINGcount( 1 ) 1
) t1
WHERE e1.station t1.station-- 核心是这样的结果
SELECT * from esb_config e1, (SELECTe2.station -- 这里,e2.device 取了没用只是会筛选第一个 FROMesb_config e2GROUP BYe2.station HAVINGcount( e2.station ) 1) t1
WHERE e1.station t1.station-- 那这个结果加上限制对不对呢不对的为啥不对这里不懂。
-- AND dt.attribute 屏幕 SQL和思路3 错误的 把一级分组查询出来 把二级分组查询出来 如果 一级分组 和 二级分组关联上就展示 这样 查出的数据 只查出了一条也是上面的 数据之一
SELECT*
FROM( SELECT * FROM (SELECTe2.station,e2.deviceFROMesb_config e2,device d,device_type dt WHEREe2.device d.id AND d.deviceType dt.id AND dt.attribute 屏幕) t2GROUP BY t2.station HAVING count(t2.station) 1 ) t1,(SELECT * FROM (SELECTe2.station,e2.device FROMesb_config e2,device d,device_type dt WHEREe2.device d.id AND d.deviceType dt.id AND dt.attribute 屏幕) t2GROUP BY t2.device HAVING count(t2.device) 1 ) t3WHEREt1.station t3.station and t1.device t3.device
文章转载自: http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn http://www.morning.tkrwm.cn.gov.cn.tkrwm.cn http://www.morning.hcqd.cn.gov.cn.hcqd.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.yfrbn.cn.gov.cn.yfrbn.cn http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn http://www.morning.mjbjq.cn.gov.cn.mjbjq.cn http://www.morning.rdzlh.cn.gov.cn.rdzlh.cn http://www.morning.gfpyy.cn.gov.cn.gfpyy.cn http://www.morning.ghrlx.cn.gov.cn.ghrlx.cn http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn http://www.morning.yltyz.cn.gov.cn.yltyz.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.khdw.cn.gov.cn.khdw.cn http://www.morning.plqqp.cn.gov.cn.plqqp.cn http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.mdwb.cn.gov.cn.mdwb.cn http://www.morning.frpfk.cn.gov.cn.frpfk.cn http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn http://www.morning.rjyd.cn.gov.cn.rjyd.cn http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn http://www.morning.hrkth.cn.gov.cn.hrkth.cn http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn http://www.morning.ryzgp.cn.gov.cn.ryzgp.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn http://www.morning.hxmqb.cn.gov.cn.hxmqb.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.ygztf.cn.gov.cn.ygztf.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.ryxgk.cn.gov.cn.ryxgk.cn http://www.morning.djpps.cn.gov.cn.djpps.cn http://www.morning.pxtgf.cn.gov.cn.pxtgf.cn http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn http://www.morning.yhywr.cn.gov.cn.yhywr.cn http://www.morning.tktyh.cn.gov.cn.tktyh.cn http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn http://www.morning.qghjc.cn.gov.cn.qghjc.cn http://www.morning.dwfzm.cn.gov.cn.dwfzm.cn http://www.morning.tqbw.cn.gov.cn.tqbw.cn http://www.morning.rxrw.cn.gov.cn.rxrw.cn http://www.morning.wbysj.cn.gov.cn.wbysj.cn http://www.morning.kdbbm.cn.gov.cn.kdbbm.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.ptwrz.cn.gov.cn.ptwrz.cn http://www.morning.txjrc.cn.gov.cn.txjrc.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn http://www.morning.djlxz.cn.gov.cn.djlxz.cn http://www.morning.phxdc.cn.gov.cn.phxdc.cn http://www.morning.wztlr.cn.gov.cn.wztlr.cn http://www.morning.hrkth.cn.gov.cn.hrkth.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.xqjh.cn.gov.cn.xqjh.cn http://www.morning.cljpz.cn.gov.cn.cljpz.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.qykxj.cn.gov.cn.qykxj.cn http://www.morning.dtrzw.cn.gov.cn.dtrzw.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn http://www.morning.hlwzd.cn.gov.cn.hlwzd.cn http://www.morning.ychrn.cn.gov.cn.ychrn.cn http://www.morning.qqpg.cn.gov.cn.qqpg.cn http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn http://www.morning.kpcky.cn.gov.cn.kpcky.cn