今天分析iislog 发现一堆 “不能使用 ;文件已在使用中” fuck…. 还不少呢!Google了一下,。找到了问题所在 整站,是asp+acc 的。。。所以只给了acc的数据库权限。。数据库目录是只读的、。 解决办法 数据库目录,给webuser加上写权限。。。立刻生成了个.ldb 。。。 顺便解释下,什么是ldb ldb 文件是由共享数据库的使用者自动创建以及删除得。.LDB 文件建立并存储计算机名、用户名以及放置扩展域锁的。 .LDB 文件一般与 .MDB 同名,并且与 .MDB 文件在相同目录,在 .MDB 文件被打开时建立并锁定。 举个例子,如果你打开 c:\northwind.mdb 文件后 c:\northwind.ldb 文件会自动被建立并被锁定。 当最后一个用户关闭共享数据库时 .ldb 文件会被自动删除。但是当用户没有正常关闭数据库或者数据库已经被标记为损坏,那么 .LDB 文件不会被自动删除, 因为 .LDB 文件中存储着数据库损坏时谁正在使用该数据库。 权限问题: 记得要给予 .LDB 文件所在的文件夹一定的权限。–我就没给。。虽然可以用,但是影响了性能。。 如果你准备共享一个数据库,该 .MDB 文件应该被放置在一个用户拥有读取、写入、建立、删除权限的目录中(NTSF格式)。 即使你要求每个用户有不同的文件权限(比如,只读或者可读写),所有能够共享该数据的用户对该目录都应该拥有读取、写入、建立的权限,但是你可以分配用户对某个 .MDB 文件只拥有只读权限。 注意:如果用独占方式打开某个数据库,那么 MS JET DB 将不会建立 .LDB 文件,此时用户对目录的权限只要求有读取和写入两个权限即可。 .ldb 文件的内容: MS JET DB ENGINE 会为每个以共享方式打开数据库的使用者在 .LDB 文件中创建一个条目,每个条目的大小是 64 字节。 前面 32 字节保存计算机名,后面 32 字节保存用户名。JET DB ENGINE 支持的最大用户数是 255,因此 .LDB 文件的大小不会超过 16 KB。 当一个用户关闭一个共享数据库时,该用户在 .LDB 文件中的条目不会立即被删除,可是该条目会在下一个用户打开这个数据库时被覆盖。 这也就意味着你不能通过 .LDB 文件来唯一确定谁是某个数据库的当前使用者。 .LDB 文件的使用方法: JET DB ENGINE 使用 .LDB 文件中的信息来确定谁锁定了数据,谁正在写入被其他人锁定的数据。 如果 JET DB ENGINE 发现有其他用户的锁定冲突, 它会读取 .LDB 文件以获取计算机名与用户名谁锁定了文件或者记录。 在多数锁定冲突情况下,你会在存储记录时得到一个 “写入冲突”的提示并且取消你所做的修改。 在有些情况下你会得到如下提示: Couldn”t lock table <table name>; currently in use by user <security name> on computer <computer name>. 注意:上述关于 .LDB 文件的信息与数据库文件无关。如果一个 .LDB 文件损坏,数据库文件仍然能够工作正常。 但是写入冲突的提示消息中<security name>这个部分你可能会看见一串不知所云的文字。 参考: 在 Access 2000 中,你可以用 VBA 来输出某个数据库的所有登陆用户的信息。 关于此代码请参考: 198755 ACC2000: Checking Who Logged into Database with Jet UserRoster 转自:http://rogermmg.blog.163.com/blog/static/117472889201112343341825/
View Details1、用MySQLDriverCS连接MySQL数据库 先下载和安装MySQLDriverCS,地址: http://sourceforge.net/projects/mysqldrivercs/ 在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中 注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MySQLDriverCS; namespace mysql { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { MySQLConnection conn = null; conn = new MySQLConnection(new MySQLConnectionString(“localhost”, ”inv”, ”root”, ”831025″).AsString); conn.Open(); MySQLCommand commn = new MySQLCommand(“set names gb2312″, conn); commn.ExecuteNonQuery(); string sql = ”select * from exchange “; MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn); DataSet ds = new DataSet(); mda.Fill(ds, ”table1″); this.dataGrid1.DataSource = ds.Tables["table1"]; conn.Close(); } } } 2、通过ODBC访问mysql数据库: 参考:http://www.microsoft.com/china/community/Column/63.mspx 1. 安装Microsoft ODBC.net:我安装的是mysql-connector-odbc-3.51.22-win32.msi 2. 安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版 3. 安装MySQL的ODBC驱动程序:我安装的是 odbc_net.msi 4. 管理工具 -> 数据源ODBC –>配置DSN… 5. 解决方案管理中添加引用 Microsoft.Data.Odbc.dll(1.0.3300) 6. 代码中增加引用 using Microsoft.Data.Odbc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试自动生成的 using System.Text; using System.Windows.Forms; using Microsoft.Data.Odbc; namespace mysql { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string MyConString = ”DRIVER={MySQL ODBC 3.51 Driver};” + ”SERVER=localhost;” + ”DATABASE=inv;” + ”UID=root;” + ”PASSWORD=831025;” + ”OPTION=3″; OdbcConnection MyConnection = new OdbcConnection(MyConString); MyConnection.Open(); Console.WriteLine(“”n success, connected successfully !”n”); string query = ”insert into test values( ‘hello’, ‘lucas’, ‘liu’)”; OdbcCommand cmd = new OdbcCommand(query, MyConnection); //处理异常:插入重复记录有异常 try{ cmd.ExecuteNonQuery(); } catch(Exception ex){ Console.WriteLine(“record duplicate.”); }finally{ […]
View Details计算机在最初只支持ASCII编码,但是后来为了支持其他语言中的字符(比如汉字)以及一些特殊字符(比如€),就引入了Unicode字符集。基于Unicode字符集的编码方式有很多,比如UTF-7、UTF-8、Unicode以及UTF-32。在Windows操作系统中,一个文本文件的前几个字节是用来指定该文件的编码方式的。如果你使用NotePad或WordPad来打开一个文本文件,你并不用担心该文件的编码方式,因为这些应用程序会先读取文件的前几个字节来确定该文件的编码方式,然后用正确的编码将文本中的每个字符显示出来。下面的图中,可以看到当用NotePad记事本保存一个文档时,可以选择的编码(Encoding)方式有哪些。 用.Net读取文本文件或写入文本文件,你都不须要担心编码方式。.Net已经将这些封装好了。在读取一个文本文件的时候,如果你已经知道文本使用的是什么编码方式,你可以指定使用哪种编码方式读取文本,否则如果不指定编码方式,.Net会读取文本的前几个字节来确定使用哪种编码方式读取文件内容的。在写入文本文件的时候,你也可以指定你想使用的编码方式。如果你没有指定编码,.Net会根据写入的文本是否含有特殊字符来决定编码方式。如果没有特殊字符,就采用ASCII编码,如果有特殊字符,就采用UTF-8编码。 (一) 读取文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串 string str = File.ReadAllText(@"c:\temp\ascii.txt"); // 也可以指定编码方式 string str2 = File.ReadAllText(@"c:\temp\ascii.txt", Encoding.ASCII); 也可以使用方法File.ReadAllLines。该方法返回一个字符串数组。每一行都是一个数组元素。 string[] strs = File.ReadAllLines(@"c:\temp\ascii.txt"); // 也可以指定编码方式 string[] strs2 = File.ReadAllLines(@"c:\temp\ascii.txt", Encoding.ASCII); 当文本的内容比较大时,我们就不要将文本内容一次读完,而应该采用流(Stream)的方式来读取内容。.Net为我们封装了StreamReader类。初始化StreamReader类有很多种方式。下面我罗列出几种 StreamReader sr1 = new StreamReader(@"c:\temp\utf-8.txt"); // 同样也可以指定编码方式 StreamReader sr2 = new StreamReader(@"c:\temp\utf-8.txt", Encoding.UTF8); FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr3 = new StreamReader(fs); StreamReader sr4 = new StreamReader(fs, Encoding.UTF8); FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt"); // OpenText 创建一个UTF-8 编码的StreamReader对象 StreamReader sr5 = myFile.OpenText(); // OpenText 创建一个UTF-8 编码的StreamReader对象 StreamReader sr6 = File.OpenText(@"C:\temp\utf-8.txt"); 初始化完成之后,你可以每次读一行,也可以每次读一个字符 ,还可以每次读几个字符,甚至也可以一次将所有内容读完。 // 读一行 string nextLine = sr.ReadLine(); // 读一个字符 int nextChar = sr.Read(); // 读100个字符 int nChars = 100; char[] charArray = new char[nChars]; int nCharsRead = sr.Read(charArray, 0, nChars); // 全部读完 string restOfStream = sr.ReadToEnd(); 使用完StreamReader之后,不要忘记关闭它: sr.Closee(); 假如我们需要一行一行的读,将整个文本文件读完,下面看一个完整的例子: StreamReader sr = File.OpenText(@"C:\temp\ascii.txt"); string nextLine; while ((nextLine = sr.ReadLine()) != null) { Console.WriteLine(nextLine); } sr.Close(); (二) 写入文件 写文件和读文件一样,如果你要写入的内容不是很多,可以使用File.WriteAllText方法来一次将内容全部写如文件。如果你要将一个字符串的内容写入文件,可以用File.WriteAllText(FilePath) 或指定编码方式 File.WriteAllText(FilePath, Encoding)方法。 string str1 = "Good Morning!"; File.WriteAllText(@"c:\temp\test\ascii.txt", str1); // 也可以指定编码方式 File.WriteAllText(@"c:\temp\test\ascii-2.txt", str1, Encoding.ASCII); 如果你有一个字符串数组,你要将每个字符串元素都写入文件中,可以用File.WriteAllLines方法: string[] strs = { "Good Morning!", "Good Afternoon!" }; File.WriteAllLines(@"c:\temp\ascii.txt", strs); File.WriteAllLines(@"c:\temp\ascii-2.txt", strs, Encoding.ASCII); 使用File.WriteAllText或File.WriteAllLines方法时,如果指定的文件路径不存在,会创建一个新文件;如果文件已经存在,则会覆盖原文件。 当要写入的内容比较多时,同样也要使用流(Stream)的方式写入。.Net封装的类是StreamWriter。初始化StreamWriter类同样有很多方式: // 如果文件不存在,创建文件; 如果存在,覆盖文件 StreamWriter sw1 = new StreamWriter(@"c:\temp\utf-8.txt"); // 也可以指定编码方式 // true 是 append text, false 为覆盖原文件 StreamWriter sw2 = new StreamWriter(@"c:\temp\utf-8.txt", true, Encoding.UTF8); // FileMode.CreateNew: 如果文件不存在,创建文件;如果文件已经存在,抛出异常 FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read); // UTF-8 为默认编码 StreamWriter sw3 = new StreamWriter(fs); StreamWriter sw4 = new StreamWriter(fs, Encoding.UTF8); // 如果文件不存在,创建文件; 如果存在,覆盖文件 FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt"); StreamWriter sw5 = myFile.CreateText(); 初始化完成后,可以用StreamWriter对象一次写入一行,一个字符,一个字符数组,甚至一个字符数组的一部分。 // 写一个字符 sw.Write('a'); // 写一个字符数组 char[] charArray = new char[100]; // initialize these characters sw.Write(charArray); // 写一个字符数组的一部分 sw.Write(charArray, 10, 15); 同样,StreamWriter对象使用完后,不要忘记关闭。sw.Close(); 最后来看一个完整的使用StreamWriter一次写入一行的例子: FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt"); StreamWriter sw = myFile.CreateText(); string[] strs = { "早上好", "下午好" }; foreach (var s in strs) { sw.WriteLine(s); } sw.Close(); 转自:http://www.cnblogs.com/jfzhu/archive/2012/11/16/2772576.html
View Detailsopenfiledialog的使用方法 OpenFileDialog file = new OpenFileDialog(); //file.Title = “打开(Open)”;//弹出对话框的框名称 //file.Filter = “文本文件(*.txt)|*.txt”;//限制弹出对话框显示文本类型 //file.Filter = “所有文件(*.*)|*.*”;//限制弹出对话框显示文件类型 file.ShowDialog(); textBox2.Text = file.SafeFileName; ————————————— folderbrowserdialog的使用方法 FolderBrowserDialog fbd = new FolderBrowserDialog(); //fbd.SelectedPath = @”F:….”;//设置当前选择的路径 //fbd.ShowNewFolderButton = false;//是否显示新建文件夹按钮 //fbd.Description = “請選擇您將要匯出的路徑”;//描述弹出框功能 //fbd.RootFolder = Environment.SpecialFolder.Personal;//打开到个人文件夹 fbd.ShowDialog(); textBox1.Text = fbd.SelectedPath; 转自:http://blog.sina.com.cn/s/blog_7d2de80301010ak3.html
View Details问题如题。 解决:安装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自从安装了ssh工具后,可爱的ping命令就不能用了,真郁闷…… 然后就把ssh工具卸载了,还是不能用,于是百度~解决。 原因:某些软件把自己添加到环境变量中时,却把系统的环境变量覆盖了,重新把系统的环境变量加上就可以了: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM
View Details服务,是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。其实,服务就是一种特殊的应用程序,它从服务启动开始就一直处于运行状态,而普通应用程序在运行之后就处于休眠状态,直到用户再次对其进行操作;在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 Details条件:本人使用的是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 DetailsCase具有两种格式。简单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