开机时出现 Abnormal termination
问题如题。 解决:安装Acronis Disk Director Suite 后,并且软件的提交操作中只有重启和取消两种操作,如果点击重启,根本不会对硬盘分区,就直接重启了。如果点击取消,则根本不会出现任何操作。无论对分区怎么操作都是重启,在重启时报错: Abnormal Termination..Abnormal Termination的意思是“异常终止”,说明Acronis Disk Director Suite 10.00.2160没有办法完成分区操作就已经终止了修改方法看这里:注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager下有个主键:BootExecute,它原来的值是:autocheck autochk *但安装了Acronis Disk Director Suite 中文版后,它变成了autocheck autochk *autopartntautopartntautopartnt把新增的三个autopartnt删除,恢复成:autocheck autochk *,再进行分区修改就正确了如果安装了Pqmagic在出错后每次启动出错,应该也是修改这个地方
View Details解决:’ping’ 不是内部或外部命令,也不是可运行的程序
自从安装了ssh工具后,可爱的ping命令就不能用了,真郁闷…… 然后就把ssh工具卸载了,还是不能用,于是百度~解决。 原因:某些软件把自己添加到环境变量中时,却把系统的环境变量覆盖了,重新把系统的环境变量加上就可以了: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM
View DetailsWindows服务的手动添加和删除方法
服务,是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。其实,服务就是一种特殊的应用程序,它从服务启动开始就一直处于运行状态,而普通应用程序在运行之后就处于休眠状态,直到用户再次对其进行操作;在WinXP里,服务是在系统加载以后就自动启动的,而不需要登陆,但自动运行的普通应用程序是在WinXP加载并登录以后才执行的。 对于安装服务,一般分为两种情况: 情况一:安装可以作为服务运行的程序成为WinXP的服务; 情况二:安装不可以作为服务运行的程序(即普通的应用程序)成为WinXP的服务。 使用安装工具:srvinstw.exe和srvany.exe,Win2000资源工具包中提供的工具; 下面是手工添加服务的方法,适用找不到添加工具的时候手工添加服务。 通过修改注册表来添加服务: 在注册表编辑器,展开分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services”,在右侧窗格中显示的就是本机安装的服务项。如果要新建服务,只须点击“编辑→新建→项”,然后为此项命名,如“test”;然后右击该项,选择“新建→字符串值”或“新建→Dword值”即可。 添加一个服务项目具体需要添加的键值如下: “DisplayName”,字符串值,对应服务名称; “Description”,字符串值,对应服务描述; “ImagePath”,字符串值,对应该服务程序所在的路径; “ObjectName”,字符串值,值为“LocalSystem”,表示本地登录; “ErrorControl”,Dword值,值为“1”; “Start”,Dword值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止; “Type”,Dword值,应用程序对应10,其它对应20。 另外,还要在“test”项下新建一个“Enum”项。如果有些必须通过srvany来加载的还必须添加另外的Parameters子项在该项中提供详细的要加为服务的程序所在的路径。而上面的那个路径就需要指到srvany所在的路径。 上面提到的是如何添加服务,怎么删除windows服务呢,请继续看: 一、Windows服务 Windows服务也称为Windows Service,它是Windows操作系统和Windows网络的基础,属于系统核心的一部分,它支持着整个Windows的各种操作。诸如DNS客户端、打印程序、Windows更新服务、计划任务、Windows时间服务、告警器等服务,它们关系到机器能否正确运行。如果不能适当地管理这些服务,就会影响到机器的正常操作。 一个服务首先是一个Win32可执行程序,或者是是rundll32.exe来运行一个.dll的方式形成的进程。 跟普通应用程序不一样,如打开WORD,有一个界面出来,但服务没有用户界面。也不能通过直接双击运行相应的.exe程序来运行。那Windows又是如何控制一个服务的? Windows的服务由更上一级的services.exe这个服务来管理,由它来管理,负责进行服务的启动、停止、运行,暂停等。我们最常用的操作就是通过Windows的服务MMC界面来完成相关操作。 二、如何删除Windows服务 现在的流氓软件,越来越多把自己注册为一个服务。在Hijackthis的扫描日志中,一般会把非Windows系统的服务以023的方式列出来,如下面这段: O23 – 未知 – Service: BKMARKS [提供传输协议的数据安全保护机制,有效维护数据传输中的安全及完整。] – C:\WINDOWS\SYSTEM32\RUNDLL.EXE O23 – 未知 – Service: ewido anti-spyware 4.0 guard [ewido anti-spyware 4.0 guard] – D:\Program Files\ewido anti-spyware 4.0\guard.exe O23 – 未知 – Service: KSD2Service [KSD2Service] – C:\WINDOWS\system32\SVCH0ST.exe 对于这些流氓软件,需要删除相关的.exe文件,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。 删除的办法有两个: 办法一: 用sc.exe这个Windows命令 开始——运行——cmd.exe,然后输入sc就可以看到了。使用办法很简单:sc delete “服务名”(如sc deleteService 83F9085F) 如针对上面的: sc delete KSD2Service 方法二:直接进行注册表编辑(不推荐) 打开注册表编辑器,找到下面的键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。(HKEY_CURRENT_USER\SYSTEM \CurrentControlSet\Services 下可能也有,可在注册表中查找删除) 三、特殊情况 1、如果服务显示的是rundll32.exe,并且这个文件是位于system32目录下,那么就不能删除这个rundll32.exe文件,它是Windows系统的文件。这时只要清除相关的服务就可以了 2、如果一个服务删除了马上又自动建立了,说明后台有进程在监视、保护。需要先在进程管理器中杀掉相应的进程,或者启动后按F8,到安全模式下删除。 转自:http://www.8844.com/html/IT_jiaocheng/ruanjian/chengxu/Windows/system/2011/10-21/378635.html
View Details11个实用的Apache .htaccess配置
Apache的.htaccess文件是服务器的心脏,控制着网站访问的各种规则。这里提供了10个不错的.htaccess片段能够帮助你优化你的网站,包括重定向、性能、可用性等等! 1. 强制后缀反斜杠 在URL的尾部加上反斜杠似乎对SEO有利 :)
|
1 2 3 4 |
<IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule> |
2. 防盗链 节省你宝贵的带宽吧!
|
1 2 3 4 5 6 |
RewriteEngine On #Replace ?mysite\.com/ with your blog url RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Replace /images/nohotlink.jpg with your "don't hotlink" image url RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] |
3. 重定向移动设备 加入你的网站支持移动设备访问的话,最好还是重定向移动设备的访问到专门定制的页面
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
RewriteEngine On RewriteCond %{REQUEST_URI} !^/m/.*$ RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC] #------------- The line below excludes the iPad RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$ #------------- RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW RewriteRule ^(.*)$ /m/ [L,R=302] |
4. 强制浏览器下载指定的文件类型 你可以强制浏览器下载某些类型的文件,而不是读取并打开这些文件,例如MP3、XLS。
|
1 2 3 4 5 6 7 8 |
<Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment </Files> <Files *.eps> ForceType application/octet-stream Header set Content-Disposition attachment </Files> |
5. 火狐的跨域名字体嵌入 火狐不允许嵌入一个外站的字体,下面的.htaccess片段可以绕过这个限制
|
1 2 3 4 5 |
<FilesMatch "\.(ttf|otf|eot|woff)$"> <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "http://yourdomain.com" </IfModule> </FilesMatch> |
6. 使用.htaccess缓存 给网站提速 恐怕这个是最有用的代码片段了。这段代码能帮你极大的提高网站的速度!
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 1 YEAR <FilesMatch "\.(ico|pdf|flv)$"> Header set Cache-Control "max-age=29030400, public" </FilesMatch> # 1 WEEK <FilesMatch "\.(jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> # 2 DAYS <FilesMatch "\.(xml|txt|css|js)$"> Header set Cache-Control "max-age=172800, proxy-revalidate" </FilesMatch> # 1 MIN <FilesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=60, private, proxy-revalidate" </FilesMatch> |
7. 阻止WordPress博客的垃圾评论 还在为垃圾评论头疼吗?你可以用Akismet插件来解决这个问题,但是.htaccess文件来的更直接:阻止垃圾评论机器人访问wp-comments-post.php文件。
|
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule> |
8.重定向不同的feed格式到统一的格式 很多年前,有很多不同的feed格式,例如RSS、Atom、RDF等等。但是现在RSS已经占了绝对的主导地位。下面这段代码可以让你重定向不同的feed格式到同一个feed。这段代码可以直接在WordPress博客上使用。
|
1 2 3 4 |
<IfModule mod_alias.c> RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/ </IfModule> |
9. 配置网站的HTML5视频 HTML5为我们带来了不用Flash的视频播放功能,但是你必须配置你的服务器来提供最新的HTML5视频播放功能。
|
1 2 3 4 5 6 7 8 |
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico AddType video/ogg .ogv AddType video/ogg .ogg AddType video/mp4 .mp4 AddType video/webm .webm AddType application/x-shockwave-flash swf |
10. 记录PHP错误 在页面上显示PHP错误是很尴尬的事情,也不安全,下面这段代码可以把PHP错误记录到.log文件中而不在页面显示。
|
1 2 3 4 5 6 7 |
# display no errs to user php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off # log to file php_flag log_errors on php_value error_log /location/to/php_error.log |
11. 在JavaScript代码中运行PHP 在JS中插入PHP代码有时候是很有用的,例如读取数据库。下面这段代码可以让你在JS中运行PHP。
|
1 2 3 4 5 6 |
AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js <FilesMatch "\.(js|php)$"> SetHandler application/x-httpd-php </FilesMatch> |
|
1 |
转自:<a href="http://www.open-open.com/bbs/view/1319588511749"><span style="color:#E3272D;">http://www.open-open.com/bbs/view/1319588511749</span></a> |
apache 伪静态设置方法
伪静态就是将动态网页生成静态文件,从而能减轻服务器压力,提高访问速度和搜索引擎收录。下面我们看一下Apache是如何实现伪静态的.Apache伪静态主要是靠mod_rewrite.so模块来完成的。如果你的Apache还没有安装,那么在安装配置Apache时加上–enable-rewrite选项就行了,这样在你的Apache安装目录modules文件夹下就会生成mod_rewrite.so模块。倘若你已经安装完了Apache也没关系,我们可以利用Apache安装程序生成一个mod_rewrite.so模块。 1.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。 如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。 如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。 2.让apache服务器支持.htaccess 修改httpd.conf文件 Options FollowSymLinks AllowOverride None 改为 Options FollowSymLinks AllowOverride All 注意:除了要设置上面的地方以后,还得设置一下下面这个(网上很多资料都没有讲到这一块),否则你将会配制失败, 把 DocumentRoot 后面的参数改为你本地网站的目录 例如你网站的根目录为 D:/web/ 则得设置为 DocumentRoot “D:/web/” 也就是修改当前目录。此步骤设置好后也得重启apache服务器才能生效。 3.建立.htaccess 文件 建立.htaccess文件的3种方法:1)打开记事本,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个红色部分,也就是包含英文引号,然后点击保存就行了。2)在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。如果这都嫌麻烦,那有更简单的,3)直接下载我为您准备的.htaccess文件,然后用记事本打开修改即可。 htaccess文件 4.填写网站伪静态规则(需要了解正则表达式) <IfModule mod_rewrite.c> RewriteEngine on RewriteRule index.html$ index.php RewriteRule index-([1-9]+[0-9]*).html$ index.php?p=$1 </IfModule> 转自:http://www.okajax.com/a/201106/apache_rewrite.html
View Detailswindows server2008系统开启win7主题和Aero Peek桌面预览(manhaosslove亲测)
条件:本人使用的是Chew-WGA.0.9破解的server 2008 r2 ,这个能照下面的开启win7主题和aero peek桌面预览 使用SK_Patch_v1_R2_Final破解的是oem完美激活,可惜此windows版本不支持主题 下列是说Chew-WGA.0.9破解的r2办法 1.管理工具—-服务管理器—功能—-添加功能—–打勾桌面体验(安装MediaPlayer和Windows7的功能部件)—-装完重启 2.管理工具—服务—启用Themes服务C:\windows\system32\svchost.exe,以后开启选自动! 3.鼠标右击桌面—个性化—选择使用Aero主题 4.把你的显卡驱动装好才能在性能设置里出现Aero Peek桌面预览题项选,本人使用的是艾尔莎8600GT显卡,不知道是否对显卡要求高不高,不过显卡驱动没装之前高级系统设置里你别想见到此项.哈哈顺手也把声卡驱动也装了,并在服务开启Windows Audio服务,并设置为自动. 5..计算机右击鼠标属性—–高级系统设置—-高级—-性能设置—-自定义—-钩选(启用Aero主题)—-结果在任务栏属性也就可以看到Aero Peek预览桌面是启用可选的. 6.修改Aero Peek桌面预览速度:运行—–cmd—-regedt32—-打开注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced下面新建DWORDS(32位)键值—命名Desktop Livel Preview Hover Time—-键值是500-2000(十进制) PS:已经开启过aero peek桌面预览的,觉得没过动过什么,却突然用不了aero peek了? 或者在高级设置里没法见到aero peek那项 解决办法:个性化—–更改主题重新选取Aero主题—–进去高级设置那就能见到aero peek那项了,点选,开启了aero peek后,你再更改桌面背影,选取多张图片,可以桌面幻灯片10秒—-1天多项选择更换桌面的图片! 转自:http://hi.baidu.com/manhaosslove/item/22d508882a69c85ee63d191d
View DetailsMySQL 时区设置
MySQL 时区默认是服务器的时区。 可以通过以下命令查看 SQL代码 mysql> show variables like ‘%time_zone%’;+——————+——–+| Variable_name | Value |+——————+——–+| system_time_zone | CST || time_zone | SYSTEM |+——————+——–+2 rows in set (0.00 sec) 可以通过修改my.cnf在 [mysqld] 之下加 default-time-zone=timezone来修改时区。如:default-time-zone = ‘+8:00′改了记得重启msyql喔注意一定要在 [mysqld] 之下加 ,否则会出现 unknown variable ‘default-time-zone=+8:00′ 另外也可以通过命令 set time_zone = timezone比如北京时间(GMT+0800)set time_zone = ‘+8:00′;这个和php的时区设置又有点差别,比如北京时间在php中是date_default_timezone_set(‘Etc/GMT-8′); 美国pst时间(GMT-08:00)set time_zone = ‘-8:00′; SQL代码 mysql> set time_zone = ‘+8:00′;Query OK, 0 rows affected (0.00 sec) mysql> select now();+———————+| now() |+———————+| 2008-12-29 11:26:36 |+———————+1 row in set (0.00 sec) mysql> set time_zone = ‘-8:00′;Query OK, 0 rows affected (0.00 sec) mysql> select now();+———————+| now() |+———————+| 2008-12-28 19:27:09 |+———————+1 row in set (0.00 sec) 定义函数: function set_time_zone(){mysql_query(“set time_zone = ‘+8:00′;”);$sql=mysql_query(“select now() as now”);$r=mysql_fetch_array($sql);return $r['now'];} 转自:http://www.majormoves.net/post/441/
View DetailsMysql常用命令行大全
第一招、mysql服务的启动和停止 net stop mysql net start mysql 第二招、登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是: mysql> 注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP 第三招、增加新用户 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码” 如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: grant select,insert,update,delete on *.* to user1@localhost Identified by “password1″; 如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。 如果你不想user1有密码,可以再打一个命令将密码去掉。 grant select,insert,update,delete on mydb.* to user1@localhost identified by “”; 第四招: 操作数据库 登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。 1、 显示数据库列表。 show databases; 缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。 2、 显示库中的数据表: use mysql; show tables; 3、 显示数据表的结构: describe 表名; 4、 建库与删库: create database 库名; drop database 库名; 5、 建表: use 库名; create table 表名(字段列表); drop table 表名; 6、 清空表中记录: delete from 表名; 7、 显示表中的记录: select * from 表名; 第五招、导出和导入数据 1. 导出数据: mysqldump –opt test > mysql.test 即将数据库test数据库导出到mysql.test文件,后者是一个文本文件 如:mysqldump -u root -p123456 –databases dbname > mysql.dbname 就是把数据库dbname导出到文件mysql.dbname中。 2. 导入数据: mysqlimport -u root -p123456 < mysql.dbname。 不用解释了吧。 3. 将文本数据导入数据库: 文本数据的字段数据之间用tab键隔开。 use test; load data local infile “文件名” into table 表名; 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5:创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6:显示表的结构: mysql> DESCRIBE MYTABLE; 7:往表中加入记录 mysql> insert into MYTABLE values (“hyq”,”M”); 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE; 9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 10:删除表 mysql>drop TABLE MYTABLE; 11:清空表 mysql>delete from MYTABLE; 12:更新表中数据 mysql>update MYTABLE set sex=”f” where name=’hyq’; posted on 2006-01-10 16:21 happytian 阅读(6) 评论(0) 编辑 收藏 收藏至365Key 13:备份数据库 mysqldump -u root 库名>xxx.data 14:例2:连接到远程主机上的MYSQL 假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出MYSQL命令: exit (回车)
View DetailsSQL中Case的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。 –简单Case函数 CASE sex WHEN ’1′ THEN ’男’ WHEN ’2′ THEN ’女’ ELSE ’其他’ END –Case搜索函数 CASE WHEN sex = ’1′ THEN ’男’ WHEN sex = ’2′ THEN ’女’ ELSE ’其他’ END 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 –比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( ’a', ’b') THEN ’第一类’ WHEN col_1 IN (‘a’) THEN ’第二类’ ELSE’其他’ END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country)人口(population) 中国600 美国100 加拿大100 英国200 法国300 日本250 德国200 墨西哥50 印度250 根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。 洲人口 亚洲1100 北美洲250 其他700 想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。 如果使用Case函数,SQL代码如下: SELECT SUM(population), CASE country WHEN ’中国’ THEN ’亚洲’ WHEN ’印度’ THEN ’亚洲’ WHEN ’日本’ THEN ’亚洲’ WHEN ’美国’ THEN ’北美洲’ WHEN ’加拿大’ THEN ’北美洲’ WHEN ’墨西哥’ THEN ’北美洲’ ELSE ’其他’ END FROM Table_A GROUP BY CASE country WHEN ’中国’ THEN ’亚洲’ WHEN ’印度’ THEN ’亚洲’ WHEN ’日本’ THEN ’亚洲’ WHEN ’美国’ THEN ’北美洲’ WHEN ’加拿大’ THEN ’北美洲’ WHEN ’墨西哥’ THEN ’北美洲’ ELSE ’其他’ END; 同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下; SELECT CASE WHEN salary <= 500 THEN ’1′ WHEN salary > 500 AND salary <= 600 THEN ’2′ WHEN salary > 600 AND salary <= 800 THEN ’3′ WHEN salary > 800 AND salary <= 1000 THEN ’4′ ELSE NULL END salary_class, COUNT(*) FROM Table_A GROUP BY CASE WHEN salary <= 500 THEN ’1′ WHEN salary > 500 AND salary <= 600 THEN ’2′ WHEN salary > 600 AND salary <= 800 THEN ’3′ WHEN salary > 800 AND salary <= 1000 THEN ’4′ ELSE NULL END; 二,用一个SQL语句完成不同条件的分组。 有如下数据 国家(country)性别(sex)人口(population) 中国1 340 中国2 260 美国1 45 美国2 55 加拿大1 51 加拿大2 49 英国1 40 英国2 60 按照国家和性别进行分组,得出结果如下 国家男女 中国340 260 美国45 55 加拿大51 49 英国40 60 普通情况下,用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分),而且SQL语句会比较长。 […]
View Details