数据库与excel的几个技巧.docx
- 文档编号:6110719
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:15
- 大小:191.47KB
数据库与excel的几个技巧.docx
《数据库与excel的几个技巧.docx》由会员分享,可在线阅读,更多相关《数据库与excel的几个技巧.docx(15页珍藏版)》请在冰豆网上搜索。
数据库与excel的几个技巧
数据库与excel的几个技巧
一、例子:
如何实现关联表字段更新
有三个表分别是销售表、客户表、地区表:
销售表有两个字段分别是客户编码和地区名称,其中地区名称都为空;客户表有两个字段是客户编码和地区代码,地区表有两个字段是地区代码和地区名称,现在想用sql语句更新销售表的地区名称字段为地区表中对应的地区名称,如何实现?
UPDATE多表更新(转)(2008-05-1215:
29:
04)
转载标签:
update多表更新sql分类:
php网络编程
在开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情.本文总结了Update语句更新多表时在SQLServer,Oracle,MySQL三种数据库中的用法.我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的.
在本例中:
我们要用表gdqlpj中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当landleveldata中的GEO_Code字段值与gdqlpj中的lxqdm字段值相等时进行更新.
SQLServer语法:
UPDATE{table_nameWITH(
SQLServer示例:
updateaseta.gqdltks=b.gqdltks,a.bztks=b.bztksfromlandleveldataa,gdqlpjbwherea.GEO_Code=b.lxqdm
Oracle语法:
UPDATEupdatedtableSET(col_name1[,col_name2...])=(SELECTcol_name1,[,col_name2...]FROMsrctable[WHEREwhere_definition])
Oracel示例:
updatelandleveldataaset(a.gqdltks,a.bztks)=(selectb.gqdltks,b.bztksfromgdqlpjbwherea.GEO_Code=b.lxqdm)
MySQL语法:
UPDATEtable_referencesSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition]
MySQL示例:
updatelandleveldataa,gdqlpjbseta.gqdltks=b.gqdltks,a.bztks=b.bztkswherea.GEO_Code=b.lxqdm
多表关联修改关联字段的值sql语句
updatecfg_dealert
sett.provincerange=(selecta.provinceid
fromcde_citya
wherea.provincename=t.provincerangeanda.cityname=t.cityrange),
t.cityrange =(selecta.cityid
fromcde_citya
wherea.cityname=t.cityrange
anda.provincename=t.provincerange)
wheret.cid='3130';
将城市表中的省份id城市id赋值给经销商表中的省份城市
高亮效果
Ife.Row.RowType=DataControlRowType.DataRowThen
'当鼠标放上去的时候先保存当前行的背景颜色并给附一颜色
e.Row.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='Azure',this.style.fontWeight='';")
'当鼠标离开的时候将背景颜色还原的以前的颜色
e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor,this.style.fontWeight='';")
EndIf
一个UPDATE语句中更新两个关联表中的多个字段?
大家好,我是新手。
有个问题需要大家帮忙看看。
我需要在一个UPDATE语句中更新两个关联表中的多个字段,我试写了下面的语句,结果报错如下:
第1行:
'('附近有语法错误。
;第4行:
'='附近有语法错误。
请各位高手帮我看看。
谢谢大家!
update(selecta.daco,b.branch,c.custcd,c.statcod2from#accntab_tempainnerjoindwdbsmas_tempbon(um=substring(b.custcod,1,6)anda.ccy=b.ccycodeanda.brcr=b.brca)
innerjointblcustcodecon(um=c.custcd)
where (umbetween'260000'and'269993')andsubstring(a.acod,1,7)='2507009'and ((b.product='MA'andb.txtype='FD')or(b.product='FD'andb.txtype='NM')or(b.product='CA'andb.txtype='CD')) andsubstring(b.custcod,7,1)='S'anda.ldbl<>0andlen(a.acod)=7andsubstring(b.branch,1,7)<>'F')
setacod=substring(acod,1,7)+'2060201',daco=(casewhenabs(ldbl)=amtthenamtwhenabs(ldbl)>amtthenamtwhenabs(ldbl) 例: 如何在excel中筛选出两列中相同的数据并配对排序 假定原数据在SHEET1工作表中,请在SHEET2工作表A1单元格输入公式: =IF(ROW()>SUM(IF(COUNTIF(Sheet1! C: C,Sheet1! $A$1: $A$3),1)),IF(ROW()>COUNTA(Sheet1! A: A),"",INDEX(Sheet1! A: A,SMALL(IF(COUNTIF(Sheet1! C: C,Sheet1! $A$1: $A$3),65536,ROW($1: $3)),ROW()-SUM(IF(COUNTIF(Sheet1! C: C,Sheet1! $A$1: $A$3),1))))),INDEX(Sheet1! A: A,SMALL(IF(COUNTIF(Sheet1! C: C,Sheet1! $A$1: $A$3),ROW($1: $3),65536),ROW()))) 公式以CTRL+SHIFT+回车结束。 将公式向下复制。 在SHEET2工作表B1单元格输入公式: =IF(A1="","",VLOOKUP(A1,Sheet1! A: B,2,)) 将公式向下复制。 在SHEET2工作表C1单元格输入公式: =IF(ROW()>SUM(IF(COUNTIF(Sheet1! C: C,Sheet1! $A$1: $A$3),1)),IF(ROW()>COUNTA(Sheet1! C: C),"",INDEX(Sheet1! C: C,SMALL(IF(COUNTIF(Sheet1! A: A,Sheet1! $C$1: $C$3),65536,ROW($1: $3)),ROW()-SUM(IF(COUNTIF(Sheet1! A: A,Sheet1! $C$1: $C$3),1))))),A1) 公式以CTRL+SHIFT+回车结束。 将公式向下复制。 在SHEET2工作表D1单元格输入公式: =IF(C1="","",VLOOKUP(C1,Sheet1! C: D,2,)) 将公式向下复制。 假设数据从A2,B2开始 在A列后插入辅助列B列,在b2输入=IF(ISERROR(VLOOKUP(A2,C: E,3,0)),"",0),下拉至结尾, 在c列后插入辅助列D列,在D2输入=IF(ISERROR(VLOOKUP(C2,A: B,2,0)),"",1),下拉至结尾, 然后选择A,B列,数据--排序,在出现的对话框中,主要关键字选“B列”,次要关键字选“A列”,确定,再选择C,D列,数据--排序,在出现的对话框中,主要关键字选“D列”,次要关键字选“C列”,确定即可满足要求了。 例: A.B两列.如何找出两例相同的数据.其实是B列包含A列所有的数据.也就是在B列找出A列的内容.然后排在A列前面.? 假设这些数据没有标题行的话: (如果C列有数据的情况下),请在A列和B列后面插入一列 然后,在C列的C1单元格里输入公式: =VLOOKUP(B1,$A$1: $A$150,1,FALSE) 上述公式的意思是,当B1与“A1至A150”中一个数据相同,则返回这个数据到C1单元格。 在这个公式当中用到了绝对引用的概念,意思是在你向C2及C3等单元格拖公式的时候,这个范围不会因复制公式而变化,“$”就是这个作用。 例如上面的公式当用鼠标拖动复制到C2单元格的时候就会是: =VLOOKUP(B2,$A$1: $A$15,1,FALSE) 在用EXCEL里“VLOOKUP”这个函数的时候切记两个关键点: 1。 A1至A150这个范围里的数据一定要升序排列。 (当然,根据需要,你的范围不一定是A1至A150,也可能是A1至A2800) 2。 要查找的这一列一定要在第一列也即A列,否则会出错。 VLOOKUP公式简述: (需要搜索的值,所搜索的范围,返回第几列的值,精确还是模糊匹配) 其中: ---要搜索的值是B1, ---搜索范围为A1至A150(在第一列,并升序排列) ---返回的是第一列里的值 ---精确(EXCEL里的函数说明我看不明白,但一定是用false,不信你用true试试结果一定不对) 如有不明白,可以到EXCEL里查看这个函数的帮助。 两种用于比较MicrosoftExcel工作表两列中的数据和查找重复项的方法。 方法1: 使用工作表公式 若要使用工作表公式比较两列中的数据,请按照下列步骤操作: 1.启动Excel。 2.在新的工作表中,输入下面的数据(保留列B为空): 3.A1: 1B1: C1: 3 4.A2: 2B2: C2: 5 5.A3: 3B3: C3: 8 6.A4: 4B4: C4: 2 7.A5: 5B5: C5: 0 8.在单元格B1中键入以下公式: =IF(ISERROR(MATCH(A1,$C$1: $C$5,0)),"",A1) 9.选择单元格B1: B5。 10.在MicrosoftOfficeExcel2003和Excel的较早版本中,指向“编辑”菜单上的“填充”,然后单击“向下”。 在MicrosoftOfficeExcel2007中,在“编辑”组中单击“填充”,然后单击“向下”。 重复的数字显示在列B中,如下所示: 11.A1: 1B1: C1: 3 12.A2: 2B2: 2C2: 5 13.A3: 3B3: 3C3: 8 14.A4: 4B4: C4: 2 15.A5: 5B5: 5C5: 0 回到顶端 方法2: 使用VisualBasic宏 Microsoft提供的编程示例只用于说明目的,不附带任何明示或默示的保证。 这包括但不限于对适销性或特定用途适用性的默示保证。 本文假定您熟悉所演示的编程语言和用于创建和调试过程的工具。 Microsoft支持工程师可以帮助解释某个特定过程的功能。 但是,他们将不会修改这些示例以提供额外的功能,也不会构建过程以满足您的特定要求。 要使用VisualBasic宏比较两列中的数据,请按照下列步骤操作: 1.启动Excel。 2.按Alt+F11启动VisualBasic编辑器。 3.在插入菜单上,单击模块。 4.在模块表中输入下面的代码: 5.SubFind_Matches() 6.DimCompareRangeAsVariant,xAsVariant,yAsVariant 7.'SetCompareRangeequaltotherangetowhichyouwill 8.'comparetheselection. 9.SetCompareRange=Range("C1: C5") 10.'NOTE: Ifthecomparerangeislocatedonanotherworkbook 11.'orworksheet,usethefollowingsyntax. 12.'SetCompareRange=Workbooks("Book2")._ 13.'Worksheets("Sheet2").Range("C1: C5") 14.' 15.'Loopthrougheachcellintheselectionandcompareitto 16.'eachcellinCompareRange. 17.ForEachxInSelection 18.ForEachyInCompareRange 19.Ifx=yThenx.Offset(0,1)=x 20.Nexty 21.Nextx 22.EndSub 23.按Alt+F11返回Excel。 24.输入下面的数据(保留B列为空): 25.A1: 1B1: C1: 3 26.A2: 2B2: C2: 5 27.A3: 3B3: C3: 8 28.A4: 4B4: C4: 2 29.A5: 5B5: C5: 0 30.选择区域A1: A5。 31.在Excel2003及较早版本的Excel中,指向“工具”菜单上的“宏”,然后单击“宏”。 在Excel2007中,单击“开发工具”选项卡,然后单击“代码”组中的“宏”。 32.单击Find_Matches,然后单击执行。 重复的数字显示在列B中。 匹配的数字将放在第一列的旁边,如下所示: A1: 1B1: C1: 3 A2: 2B2: 2C2: 5 A3: 3B3: 3C3: 8 A4: 4B4: C4: 2 A5: 5B5: 5C5: 0 列如把不同的信息用其他颜色表示出来,或者标出来也可以,但是顺序不能变 就是把第二列的和第一列的比较,不相同的区分出来,但第二列和第一列的原顺序不变, 用格式->条件格式就可以了 用条件格式 注意我用的是EXCEL2010与其它EXCEl对话框稍有不同,需要注意 最左边要用公式为,右边为图中的公式,设好字体样式,最后用格式刷复制格式。 excel如何按颜色筛选数据 具体如何操作的,谢谢 是2003年,应该怎么做呢 是单元格的填充颜色,不是字体有颜色的, 2007的,数据-筛选-按颜色-选择颜色 2003版本的貌似没这个功能。 没有直接的功能,不过有间接的, 一是函数: Sub筛选a列填充色为淡黄色的行() Fori=2To100 IfCells(i,1).Interior.ColorIndex<>6Then Rows(i).Hidden=True EndIf Next MsgBox("这是筛选结果") Rows().Hidden=False EndSub 你可以建分别筛选红色、黄色...以及显示全部的按钮,为每个按钮输入代码。 二是添加辅助列: 请参考下面的地址,动态图讲的非常详细了 用第一种函数吧 例: 用EXCEL如何查找两列中相同与不同的数据? 在D2列输入: =IF(ISNA(VLOOKUP(C2,$A$2: $B$700,2,0)),"",VLOOKUP(C2,$A$2: $B$700,2,0)) 向下填充公式。 在E2列输入 =IF(ISNA(VLOOKUP(A2,$C$2: $D$700,1,0)),A2,"") 向下填充公式。 在F2列输入 =IF(ISNA(VLOOKUP(E2,$A$2: $B$700,2,0)),"",VLOOKUP(E2,$A$2: $B$700,2,0)) 向下填充公式。 我们工作中经常会遇到这种需求,有两个数据表,想要知道两个表的公共部分和独有部分,高级筛选就可以达到此目的。 例如库房里有一个总的件号明细表,今天有一个销售明细表,想要知道今天销售的那些是库房里还有的,哪些是库房里没有的,并分别表示在两个表里,其实就是求出两个表的公共部分,就可以用高级筛选功能来实现。 实例: 如上图,左方是库房存货,右方是今天销售的货号,想求出两者的公共部分。 步骤一: 把光标放在左方数据表的任意单元格,从“数据/筛选/高级筛选”里调出“高级筛选”对话框,并在“数据(列表)区域”和“条件区域”分别如图示填上内容。 步骤二: 点击确定按钮得到如下图 步骤三: 在库存表的最右一列里填上一个“1”,并把“1”复制到整个表的最右一列。 如下图。 步骤四: 点击菜单“数据/筛选/全部显示”(2007里是“清除”按钮),使筛选后隐藏的内容显示出来。 如下图。 步骤五: 再次调出“高级筛选”对话框,这次把上次的“条件区域”和“数据(列表)区域”互换,填上如上图示的内容,点击确定,得出结果后在右侧的数据区域里写上一个“1”并复制到整列,再点击菜单“数据/筛选/全部显示”(2007里是“清除”按钮),使筛选后隐藏的内容显示出来。 标有“1”的数据行就是两个表的公共部分,没有标“1”的行就是独有部分。 技巧要点: 1、要用于筛选的两个列的标题行内容必需一致,如本例中A列和H列的标题都是“代号”,并且在填写条件时的“数据区域”和“条件区域”里的内容要包含有标题,如本例是“$H$1H$6”,而不是“$H$1H$6”。 2、为什么要标“1”并复制。 因为筛选实际上上是隐藏不符合条件的行,而在隐藏状态下,许多操作都是不行的,所以要取消隐藏,而取消隐藏后,结果就看不到了,所以要在隐藏状态下给符合条件的行最后加上一个“1”以示区别,这样当取消隐藏后仍能根据是否有“1”而看到结果。 3、用于筛选的两列里不能有空白单元格,如本例里的两个“代号”列,要连续,不能有空白单元格。 4、结果显示出来后,隐藏的是整行,所以你在看左面的数据结果时会发现右边的数据表也少了行数 Excel中提供了两种数据的筛选操作,即“自动筛选”和“高级筛选”。 如何区分这两种筛选模式,以便熟练掌握和应用,让我们来看看吧: 自动筛选“自动筛选”一般用于简单的条件筛选,筛选时将不满足条件的数据暂时隐藏起来,只显示符合条件的数据。 图1为某单位的职工工资表,打开“数据”菜单中“筛选”子菜单中的“自动筛选”命令,以“基本工资”字段为例,单击其右侧向下的列表按钮,可根据要求筛选出基本工资为某一指定数额或筛选出基本工资最高(低)的前10个(该数值可调整)记录。 还可以根据条件筛选出基本工资在某一范围内符合条件的记录,“与”、“或”来约束区分条件。 如图2,根据给定条件筛选出基本工资大于等于300且小于350的记录。 另外,使用“自动筛选”还可同时对多个字段进行筛选操作,此时各字段间限制的条件只能是“与”的关系。 如筛选出“基本工资”和“职务工资”都超过380的记录。 高级筛选“高级筛选”一般用于条件较复杂的筛选操作,其筛选的结果可显示在原数据表格中,不符合条件的记录被隐藏起来;也可以在新的位置显示筛选结果,不符合的条件的记录同时保留在数据表中而不会被隐藏起来,这样就更加便于进行数据的比对了。 例如我们要筛选出“基本工资”或“职务工资”超过380且“实发”工资超过700的符合条件的记录,用“自动筛选”就无能为力了,而“高级筛选”可方便地实现这一操作。 如图3所示,将“基本工资”、“职务工资”和“实发”三字段的字段名称复制到数据表格的右侧(表格中其他空白位置也可以),在图中所示位置输入条件,条件放在同一行表示“与”的关系,条件不在同一行表示“或”的关系。 图4即为上述操作在新的位置(B20起始位置)筛选的结果。 两种筛选操作的比较由此我们不难发现,“自动筛选”一般用于条件简单的筛选操作,符合条件的记录显示在原来的数据表格中,操作起来比较简单,初学者对“自动筛选”也比较熟悉。 若要筛选的多个条件间是“或”的关系,或需要将筛选的结果在新的位置显示出来那只有用“高级筛选”来实现了。 一般情况下,“自动筛选”能完成的操作用“高级筛选”完全可以实现,但有的操作则不宜用“高级筛选”,这样反而会使问题更加复杂化了,如筛选最大或最小的前几项记录。 在实际操作中解决数据筛选这类问题时,只要我们把握了问题的关键,选用简便、正确的操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 excel 几个 技巧