3.5寸硬盘参数表-PMR/SMR/TDMR-2018-10-24

几个列项的说明
Recording - HDD写入技术
Capacity - HDD容量
Sector - 逻辑扇区大小, 表格里只包含了512e和4Kn
Disk - 碟片数
TB/Platter - 单碟TB大小
Helium - 是否充氦
PWR IDLE - 待机功耗瓦数
PWR TYPC - 典型运行功耗瓦数
PWR PEAK - 峰值功耗瓦数
Workload - 工作负荷 (TB/年)
UBER - 不可恢复比特误码率, 14=10^14内1个bit错误
L/UL- 磁头加载/卸载循环次数, 单位是千, 所以300=300,000次
AFR - 年化故障率
POH - 通电小时数/年
MTBF - 平均故障间隔小时数, 单位是百万, 所以0.75=750,000小时, Toshiba的数值为MTTF, 跟MTBF有所不同
Warranty - 质保年数

3.5''+SATA+HDD+Database+2018-10-24+(by+jerrytsao).xlsx

Recording MFG Series STD Model Capacity (TB) Disk RPM Cache (MB)
SMR Seagate Archive ST5000AS0011 5 4 5980 128
SMR Seagate Archive ST6000AS0002 6 6 5980 128
SMR Seagate Archive ST8000AS0002 8 6 5980 128
SMR Seagate Exos 5E8 ST8000AS0003 8 4 5980 256
SMR Seagate BarraCuda ST2000DM005 2 1 5400 256
SMR Seagate BarraCuda ST2000DM008 2 1 7200 256
SMR Seagate BarraCuda ST3000DM007 3 2 5400 256
SMR Seagate BarraCuda ST4000DM004 4 2 5400 256
SMR Seagate BarraCuda ST6000DM003 6 3 5400 256
SMR Seagate BarraCuda ST8000DM004 8 4 5400 256
SMR Seagate SkyHawk ST3000VX009 3 2 5900 256
SMR Seagate SkyHawk ST6000VX001 6 4 5900 256
SMR HGST Ultrastar Archive Ha10 HMH7210A0ALE60y 10 7 7200 256
SMR HGST Ultrastar Archive Ha10 HMH7210A0ALN60y 10 7 7200 256
SMR HGST Ultrastar DC HC620/Hs14 HSH721414ALE6M0 14 8 7200 512
SMR HGST Ultrastar DC HC620/Hs14 HSH721414ALN6M0 14 8 7200 512
SMR HGST Ultrastar DC HC620 HSH721415ALE6M0 15 8 7200 512
SMR HGST Ultrastar DC HC620 HSH721415ALN6M0 15 8 7200 512
PMR Seagate Desktop ST1000DM003 1 1 7200 64/32
PMR Seagate Desktop ST2000DM001 2 2/3 7200 64
PMR Seagate Desktop ST3000DM001 3 3 7200 64
PMR Seagate Desktop ST4000DM000 4 4 5900 64
PMR Seagate Desktop ST5000DM002 5 6 7200 128
PMR Seagate Desktop ST6000DM001 6 6 7200 128
PMR Seagate Desktop ST8000DM002 8 6 7200 256
PMR Seagate BarraCuda ST1000DM010 1 1 7200 64
PMR Seagate BarraCuda ST2000DM006 2 2/3 7200 64
PMR Seagate BarraCuda ST3000DM008 3 3 7200 64
PMR Seagate BarraCuda ST4000DM005 4 3 5900 64
PMR Seagate BarraCuda Pro ST2000DM009 2 2 7200 128
PMR Seagate BarraCuda Pro ST4000DM006 4 4 7200 128
PMR Seagate BarraCuda Pro ST6000DM004 6 6 7200 256
PMR Seagate BarraCuda Pro ST8000DM005 8 6 7200 256
PMR Seagate BarraCuda Pro ST8000DM0004 8 7 7200 256
PMR Seagate BarraCuda Pro ST10000DM0001 10 7 7200 256
PMR Seagate BarraCuda Pro ST12000DM0001 12 8 7200 256
PMR+TDMR Seagate BarraCuda Pro ST14000DM0001 14 8 7200 256
PMR Seagate SV35 ST1000VX000 1 1 7200 64
PMR Seagate SV35 ST2000VX000 2 3 7200 64
PMR Seagate SV35 ST3000VX000 3 3 7200 64
PMR Seagate Surveillance ST1000VX001 1 1 5900 64
PMR Seagate Surveillance ST2000VX003 2 2 5900 64
PMR Seagate Surveillance ST3000VX006 3 3 5900 64
PMR Seagate Surveillance ST3000VX002 3 3 5900 64
PMR Seagate Surveillance ST4000VX000 4 3 5900 64
PMR Seagate Surveillance ST5000VX001 5 5 7200 128
PMR Seagate Surveillance ST6000VX001 6 6 7200 128
PMR Seagate Surveillance ST8000VX002 8 6 7200 256
PMR Seagate SkyHawk ST1000VX005 1 1 5900 64
PMR Seagate SkyHawk ST2000VX008 2 2 5900 64
PMR Seagate SkyHawk ST3000VX010 3 3 5900 64
PMR Seagate SkyHawk ST4000VX007 4 3 5900 64
PMR Seagate SkyHawk ST6000VX0023 6 5 7200 256
PMR Seagate SkyHawk ST8000VX0022 8 6 7200 256
PMR Seagate SkyHawk ST10000VX0008 10 7 7200 256
PMR Seagate SkyHawk ST12000VX0008 12 8 7200 256
PMR+TDMR Seagate SkyHawk ST14000VX0008 14 8 7200 256
PMR Seagate SkyHawk AI ST8000VE0004 4 5 7200 256
PMR Seagate SkyHawk AI ST8000VE0004 6 5 7200 256
PMR Seagate SkyHawk AI ST8000VE0004 8 6 7200 256
PMR Seagate SkyHawk AI ST10000VE0004 10 7 7200 256
PMR Seagate NAS ST1000VN000 1 1 5900 64
PMR Seagate NAS ST2000VN000 2 2 5900 64
PMR Seagate NAS ST3000VN000 3 4 5900 64
PMR Seagate NAS ST4000VN000 4 4 5900 64
PMR Seagate NAS ST6000VN0021 6 6 7200 128
PMR Seagate NAS ST8000VN0002 8 6 7200 256
PMR Seagate IronWolf ST1000VN002 1 1 5900 64
PMR Seagate IronWolf ST2000VN004 2 2 5900 64
PMR Seagate IronWolf ST3000VN007 3 3 5900 64
PMR Seagate IronWolf ST4000VN008 4 3 5900 64
PMR Seagate IronWolf ST6000VN0033 6 5 7200 256
PMR Seagate IronWolf ST8000VN0022 8 6 7200 256
PMR Seagate IronWolf ST10000VN0008 10 7 7200 256
PMR Seagate IronWolf ST12000VN0008 12 8 7200 256
PMR+TDMR Seagate IronWolf ST14000VN0008 14 8 7200 256
PMR Seagate Enterprise NAS ST2000VN0001 2 2 7200 128
PMR Seagate Enterprise NAS ST3000VN0001 3 4 7200 128
PMR Seagate Enterprise NAS ST4000VN0001 4 4 7200 128
PMR Seagate Enterprise NAS ST5000VN0001 5 5 7200 128
PMR Seagate Enterprise NAS ST6000VN0001 6 6 7200 128
PMR Seagate Enterprise NAS ST6000NE0001 6 6 7200 256
PMR Seagate Enterprise NAS ST8000NE0001 8 6 7200 256
PMR Seagate IronWolf Pro ST2000NE0025 2 2 7200 128
PMR Seagate IronWolf Pro ST4000NE0025 4 4 7200 128
PMR Seagate IronWolf Pro ST6000NE0023 6 6 7200 256
PMR Seagate IronWolf Pro ST8000NE0004 8 7 7200 256
PMR Seagate IronWolf Pro ST10000NE0008 10 7 7200 256
PMR Seagate IronWolf Pro ST12000NE0008 12 8 7200 256
PMR+TDMR Seagate IronWolf Pro ST12000NE0008 14 8 7200 256
PMR Seagate Exos 7E8/EC3.5 v5 ST2000NM0125 2 2 7200 128
PMR Seagate Exos 7E8/EC3.5 v5 ST4000NM0115 4 4 7200 128
PMR Seagate Exos 7E8/EC3.5 v5 ST6000NM0115 6 5 7200 256
PMR Seagate Exos 7E8/EC3.5 v5 ST6000NM0065 6 6 7200 256
PMR Seagate Exos 7E8/EC3.5 v5 ST8000NM0055 8 6 7200 256
PMR Seagate Exos 7E8/EC3.5 v5 ST2000NM0105 2 2 7200 128
PMR Seagate Exos 7E8/EC3.5 v5 ST4000NM0085 4 4 7200 128
PMR Seagate Exos 7E8/EC3.5 v5 ST6000NM0125 6 5 7200 256
PMR Seagate Exos 7E8/EC3.5 v5 ST6000NM0055 6 6 7200 256
PMR Seagate Exos 7E8/EC3.5 v5 ST8000NM0045 8 6 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST8000NM0016 8 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST8000NM0206 8 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST8000NM0006 8 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST8000NM0136 8 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST10000NM0016 10 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST10000NM0086 10 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST10000NM0006 10 7 7200 256
PMR Seagate Exos X10/EC3.5 v6 ST10000NM0146 10 7 7200 256
PMR Seagate Exos X12/EC3.5 v7 ST12000NM0007 12 8 7200 256
PMR+TDMR Seagate Exos X14 ST14000NM0428 14 8 7200 256
PMR HGST Ultrastar 7K6000 HUS726020ALE61y 2 2 7200 128
PMR HGST Ultrastar 7K6000 HUS726040ALE61y 4 4/5 7200 128
PMR HGST Ultrastar 7K6000 HUS726050ALE61y 5 5 7200 128
PMR HGST Ultrastar 7K6000 HUS726060ALE61y 6 5 7200 128
PMR HGST Ultrastar 7K6000 HUS726020ALN61y 2 2 7200 128
PMR HGST Ultrastar 7K6000 HUS726040ALN61y 4 4/5 7200 128
PMR HGST Ultrastar 7K6000 HUS726050ALN61y 5 5 7200 128
PMR HGST Ultrastar 7K6000 HUS726060ALN61y 6 5 7200 128
PMR HGST Ultrastar DC HC310/7K6 HUS726T4TALE6L4 4 3 7200 256
PMR HGST Ultrastar DC HC310/7K6 HUS726T6TALE6L4 6 4 7200 256
PMR HGST Ultrastar DC HC310/7K6 HUS726T4TALN6L4 4 3 7200 256
PMR HGST Ultrastar DC HC310/7K6 HUS726T6TALN6L4 6 4 7200 256
PMR HGST Ultrastar DC HC320/7K8 HUS728T8TALE6L4 8 5 7200 256
PMR HGST Ultrastar DC HC320/7K8 HUS728T8TALN6L4 8 5 7200 256
PMR HGST Ultrastar He8 HUH728060ALE60y 6 7 7200 128
PMR HGST Ultrastar He8 HUH728080ALE60y 8 7 7200 128
PMR HGST Ultrastar He8 HUH728060ALN60y 6 7 7200 128
PMR HGST Ultrastar He8 HUH728080ALN60y 8 7 7200 128
PMR HGST Ultrastar DC HC510/He10 HUH721008ALE60y 8 7 7200 256
PMR HGST Ultrastar DC HC510/He10 HUH721010ALE60y 10 7 7200 256
PMR HGST Ultrastar DC HC510/He10 HUH721008ALN60y 8 7 7200 256
PMR HGST Ultrastar DC HC510/He10 HUH721010ALN60y 10 7 7200 256
PMR HGST Ultrastar DC HC520/He12 HUH721212ALE60y 12 8 7200 256
PMR HGST Ultrastar DC HC520/He12 HUH721212ALN60y 12 8 7200 256
PMR+TDMR HGST Ultrastar DC HC530 WUH721414ALE6Ly 14 8 7200 512
PMR+TDMR HGST Ultrastar DC HC530 WUH721414ALN6Ly 14 8 7200 512
PMR WDC Blue WD10EZEX 1 1 7200 64
PMR WDC Blue WD10EZRZ 1 1 5400 64
PMR WDC Blue WD20EZRZ 2 2 5400 64
PMR WDC Blue WD30EZRZ 3 3 5400 64
PMR WDC Blue WD40EZRZ 4 4 5400 64
PMR WDC Blue WD50EZRZ 5 5 5400 64
PMR WDC Blue WD60EZRZ 6 5 5400 64
PMR WDC Black WD1003FZEX 1 1 7200 64
PMR WDC Black WD2003FZEX 2 3 7200 64
PMR WDC Black WD3003FZEX 3 4 7200 64
PMR WDC Black WD4004FZWX 4 5 7200 128
PMR WDC Black WD4005FZBX 4   7200 256
PMR WDC Black WD5001FZWX 5 5 7200 128
PMR WDC Black WD6002FZWX 6 5 7200 128
PMR WDC Black WD6003FZBX 6   7200 256
PMR WDC Purple WD10PURX 1 1 5400 64
PMR WDC Purple WD20PURX 2 2 5400 64
PMR WDC Purple WD30PURX 3 3 5400 64
PMR WDC Purple WD40PURX 4 4 5400 64
PMR WDC Purple WD50PURX 5 5 5400 64
PMR WDC Purple WD60PURX 6 5 5400 64
PMR WDC Purple WD80PUZX 8 7 5400 128
PMR WDC Purple WD81PUZX 8 7 5400 256
PMR WDC Purple WD100PURZ 10 7 5400 256
PMR WDC Purple WD101PURZ 10 7 7200 256
PMR WDC Purple WD121PURZ 12 8 7200 256
PMR WDC Red WD10EFRX 1 1 5400 64
PMR WDC Red WD20EFRX 2 2/3 5400 64
PMR WDC Red WD30EFRX 3 3 5400 64
PMR WDC Red WD40EFRX 4 4 5400 64
PMR WDC Red WD50EFRX 5 5 5400 64
PMR WDC Red WD60EFRX 6 5 5400 64
PMR WDC Red WD80EFZX 8 7 5400 128
PMR WDC Red WD100EFAX 10 7 5400 256
PMR WDC Red Pro WD2002FFSX 2 2/3 7200 64
PMR WDC Red Pro WD4002FFWX 4 5 7200 128
PMR WDC Red Pro WD4003FFBX 4   7200 256
PMR WDC Red Pro WD6002FFWX 6 5 7200 128
PMR WDC Red Pro WD6003FFBX 6   7200 256
PMR WDC Red Pro WD8001FFWX 8 7 7200 128
PMR WDC Red Pro WD8003FFBX 8 7 7200 256
PMR WDC Red Pro WD101KFBX 10 7 7200 256
PMR WDC Gold WD6002FRYZ 6 5 7200 128
PMR WDC Gold WD8002FRYZ 8 7 7200 128
PMR WDC Gold WD8003FRYZ 8 7 7200 256
PMR WDC Gold WD101KRYZ 10 7 7200 256
PMR WDC Gold WD121KRYZ 12 8 7200 256
PMR Toshiba Desktop DT01ACA100 1 1 7200 32
PMR Toshiba Desktop DT01ACA200 2 2 7200 64
PMR Toshiba Desktop DT01ACA300 3 3 7200 64
PMR Toshiba Generic Data Storage MD04ACA200 2   7200 128
PMR Toshiba Generic Data Storage MD04ACA300 3   7200 128
PMR Toshiba Generic Data Storage MD04ACA400 4 5 7200 128
PMR Toshiba Generic Data Storage MD04ACA500/D 5 5 7200 128
PMR Toshiba Generic Data Storage MD04ACA600 6 6 7200 128
PMR Toshiba Video Stream DT01ABA100V 1 1 5700 32
PMR Toshiba Video Stream DT01ABA200V 2 2 5700 32
PMR Toshiba Video Stream DT01ABA300V 3 3 5940 32
PMR Toshiba Surveillance MD04ABA400V 4   5400 128
PMR Toshiba Surveillance MD04ABA500V 5   5400 128
PMR Toshiba Surveillance MD06ACA600V 6   7200 256
PMR Toshiba Surveillance MD06ACA800V 8   7200 256
PMR Toshiba Surveillance MD06ACA10TV 10 7 7200 256
PMR Toshiba NAS MN04ACA400 4 5 7200 128
PMR Toshiba NAS MN05ACA600 6 6 7200 128
PMR Toshiba NAS MN05ACA800 8 6 7200 128
PMR Toshiba NAS MN06ACA10T 10 7 7200 256
PMR Toshiba NAS MN07ACA12T 12 8 7200 256
PMR Toshiba NAS MN07ACA14T 14 9 7200 256
PMR Toshiba Enterprise Cloud MC04ACA200E 2 4 7200 128
PMR Toshiba Enterprise Cloud MC04ACA300E 3 4 7200 128
PMR Toshiba Enterprise Cloud MC04ACA400E 4 5 7200 128
PMR Toshiba Enterprise Cloud MC04ACA500E 5 5 7200 128
PMR Toshiba Enterprise Cloud MC04ACA600E 6 5 7200 128
PMR Toshiba Enterprise Capacity MG04ACA200E 2 4 7200 128
PMR Toshiba Enterprise Capacity MG04ACA300E 3 4 7200 128
PMR Toshiba Enterprise Capacity MG04ACA400E 4 5 7200 128
PMR Toshiba Enterprise Capacity MG04ACA500E/DE 5 5 7200 128
PMR Toshiba Enterprise Capacity MG06ACA600E 6   7200 256
PMR Toshiba Enterprise Capacity MG06ACA800E 8   7200 256
PMR Toshiba Enterprise Capacity MG06ACA10TE 10 7 7200 256
PMR Toshiba Enterprise Capacity MG07ACA12TE 12 8 7200 256
PMR Toshiba Enterprise Capacity MG07ACA14TE 14 9 7200 256
PMR Toshiba Enterprise Capacity MG04ACA200A 2 4 7200 128
PMR Toshiba Enterprise Capacity MG04ACA300A 3 4 7200 128
PMR Toshiba Enterprise Capacity MG04ACA400A 4 5 7200 128
PMR Toshiba Enterprise Capacity MG04ACA500A/DA 5 5 7200 128
PMR Toshiba Enterprise Capacity MG06ACA600A 6   7200 256
PMR Toshiba Enterprise Capacity MG06ACA800A 8   7200 256
PMR Toshiba Enterprise Capacity MG06ACA10TA 10 7 7200 256
PMR Toshiba Enterprise Capacity MG07ACA12TA 12 8 7200 256
PMR Toshiba Enterprise Capacity MG07ACA14TA 14 9 7200 256

参考链接


Samsung Magician 6.0升级固件失败“在选定的驱动器上无法更新固件。”("Failed to update firmware on the selected drive.")

最近的三星固态硬盘提示固件有升级,但是固件升级失败,提示“在选定的驱动器上无法更新固件。”或者"Failed to update firmware on the selected drive."

如下图所示:

继续阅读Samsung Magician 6.0升级固件失败“在选定的驱动器上无法更新固件。”("Failed to update firmware on the selected drive.")

尝试修复希捷固件门硬盘(SV35系列ST3000VX000)

最近家里的NAS 服务器上的希捷硬盘挂了,总寿命不超过 1 万小时,当时买硬盘的时候,记得是特意规避过希捷的 STX000DM001 这个版本的硬盘,这个版本的硬盘由于质量问题,基本上都会挂掉。  结果没想到,ST3000VX000不过是 ST3000DM001 的马甲而已。

中招,经过下面的修复之后,依旧没有办法修复,数据无法读取成功。尝试其他命令之后,整盘报废,ST3000DM001 系列硬盘完全没办法用,尽管关键数据都已经冗余备份,但是部分次要数据依旧丢失。

下面只是记录一下操作过程,没有实际意义。

希捷硬盘型号信息查询网站: https://apps1.seagate.com/downloads/request.html
继续阅读尝试修复希捷固件门硬盘(SV35系列ST3000VX000)

下载Sourceforge等国内无法下载站点文件的方法

Sourceforge 是一些开源软件经常用到的网站,然而国内的网站一直不稳定,如今是可以访问,但是一直无法下载,今天发现了一种新方法那就是 http://www.mirrorservice.org 这个网站,这个网站提供了众多网站的镜像,可以通过 web 或者 ftp 等方式来访问,看了下,里面的站点相当多。 但是版本可能比较老,最新的版本可能要多等一段时间。

继续阅读下载Sourceforge等国内无法下载站点文件的方法

ANDROID 高性能图形处理 之 二. OPENGL ES

参考链接


null值在in/not in的陷阱

背景

在某个项目统计数据时,发现以外丢掉了部分数据,仔细查找,是null值在in/not in出现了判断问题。

问题

在统计数据时,需要去除某些值,使用了not in逻辑。

select null not in ('1', '2')

这行代码,要完成的逻辑是,null 不属于 '1' 或者 '2'。

想当然认为应该返回 true,实际上返回了null,null值映射为false。

最终统计丢失了这一部分null值。

继续测试

继续测试了各种null使用in/not in的例子

select null in ('1', '2', null);
select '3' not in ('1', '2', null);
select null not in ('1', '2');
都出现了与想当然不符合的结果

 

该问题的详细原理可以参考这篇文章 http://www.itpub.net/thread-1325582-1-1.html

小结

null值不应该参与in/not in逻辑判断。

 

GreenPlum-查看表占用磁盘大小

背景

最近使用GreenPlum时,因为大量实验,遗留了很多或临时或正式的表,存储捉襟见肘。准备清理表时,第一件事就是查看表占用磁盘大小,从网上找了一些方法,比较靠谱的是这两篇

https://www.cnblogs.com/gobird/archive/2012/04/11/2442846.html

https://my.oschina.net/u/347414/blog/544187

使用

查询库占用磁盘大小

select pg_size_pretty(pg_database_size('MyDatabase'));

查询表占用磁盘大小

普通表

select pg_size_pretty(pg_relation_size('relation_name')) ;

分区表

使用上面的语句去查分区表,会得到0bytes,就使用上文中创建的函数

其中 gpadmin是你的username

然后使用select查询,如

select calc_partition_table ('public', 'test_partition_table')

PostgreSQL 提供了多个系统管理函数来查看表,索引,表空间及数据库的大小

函数名 返回类型 描述
pg_column_size(any) int 存储一个指定的数值需要的字节数(可能压缩过)
pg_database_size(oid) bigint 指定OID的数据库使用的磁盘空间
pg_database_size(name) bigint 指定名称的数据库使用的磁盘空间
pg_indexes_size(regclass) bigint 关联指定表OID或表名的表索引的使用总磁盘空间
pg_relation_size(relation regclass, fork text) bigint 指定OID或名的表或索引,通过指定fork('main', 'fsm' 或'vm')所使用的磁盘空间
pg_relation_size(relation regclass) bigint pg_relation_size(..., 'main')的缩写
pg_size_pretty(bigint) text Converts a size in bytes expressed as a 64-bit integer into a human-readable format with size units
pg_size_pretty(numeric) text 把以字节计算的数值转换成一个人类易读的尺寸单位
pg_table_size(regclass) bigint 指定表OID或表名的表使用的磁盘空间,除去索引(但是包含TOAST,自由空间映射和可视映射)
pg_tablespace_size(oid) bigint 指定OID的表空间使用的磁盘空间
pg_tablespace_size(name) bigint 指定名称的表空间使用的磁盘空间
pg_total_relation_size(regclass) bigint 指定表OID或表名使用的总磁盘空间,包括所有索引和TOAST数据

 

mysql查询条件-不区分大小写

项目中遇到一个bug,查了一下问题在于mysql查询条件不区分大小写

比如 test表里面存储了两列数据

col0 col1 col2
tmp 1 1
TMP 2  2

查询语句 select * from test where col0 = 'tmp'

两行都能搜索出来。第一次拿到这一个结果,我的内心是这样的:WTF、EXM、你TMD是来逗我的吧

但事实摆在面前,不能不认怂。下一步究其根本,这个答案很靠谱

以下引自:https://blog.csdn.net/Veir_123/article/details/73730751

Mysql默认的字符检索策略:utf8_general_ci,表示不区分大小写;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。(注意:在Mysql5.6.10版本中,不支持utf8_genral_cs!!!!)

创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;如果已经创建表,则直接修改字段的Collation属性为utf8_general_cs或者utf8_bin。

直接修改sql语句,在要查询的字段前面加上binary关键字即可。
-- 在每一个条件前加上binary关键字
select * from test where binary col0 = 'tmp';

-- 将参数以binary('')包围
select * from test where col0 = binary('tmp');

sql-按条件统计非重复值,count(distinct case when)使用

背景

项目中,遇到一个统计需求,从某张表中按照条件分别统计。刚开始想到用union all的写法,太臃肿,后来使用count(distinct case when)解决此问题

count

数据统计中,count出现最频繁

最简单的用法

select count(*) from table where ....

select count(distinct xx) from table where ...

但最简单的用法也有其深刻的地方,比如这里其实有3种写法,count(1)、count(*)、count(字段),它们有什么区别呢?

  • count(1) 和 count(*)

count(1)和count(*)差别不大,使用count(*)时,sql会帮你自动优化,指定到最快的字段。所以推荐使用count(*)

  • count(*) 和 count(字段)

count(*)会统计所有行数,count(字段)不会统计null值

count(case when)

条件统计,即对某个table分条件统计,比如表test_db,有一个字段user_id(可能重复), gender(man、women),需要统计man和women的人数

可以使用where分别统计

select count(distinct user_id) as man_cnt from test_db where gender = 'man'

select count(distinct user_id) as women_cnt from test_db where gender = 'women'

也可以使用按条件统计

select count(distinct case gender = 'man' then user_id end) as man_cnt

, count(distinct case gender = 'women' then user_id end) as woman_cnt

from test_db