06_Word使用

本文介绍了一系列Word文档编辑技巧,包括内容折叠、自动生成草稿、符号快速输入、调整文字与下划线间距等,帮助用户提高文档编辑效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折叠内容

有时候内容太多,使得我们查阅起来并不是那么的方便。这里,我们可以将内容折叠起来,只留一个标题。想要看的时候,只需展开,不想看就折叠起来。当然,前提是我们需要按住Ctrl键,选中标题,然后在「样式」中设置一下标题级别。

 

生成一段草稿

首先,介绍一下此功能。因为Word是一款排版软件,所以在平常我们可能需要对各种文字进行编辑排版。但如果你没有文字内容,我们可以利用此功能来自动生成一大段文字内容,来进行排版,是不是非常妙!

输入「=rand(5,7)」回车即可生成5段,每段7句,可自行修改。

符号自动生成下划线

你是怎样输入下划线的呢?其实,在Word中,我们只需连续输入三个“-”减号,再回车即可快速的获取下划线。

同样,我们可以连续输入三个“-”、“~”、“#”、“*”回车试试!

 

英文、数字与中文之间的空隙

在录入带有英文、数字与中文的时候,你会发现字母与中文之间;数字与中文之间貌似都会有一个空格,明明没有敲空格呀,这个空格是哪里来的呢?仔细一看原来不是空格,只是之间的空隙太大了,这是咋回事呢?怎么将空隙去掉呢?

文字与下划线之间的间距

我们在使用下划线的时候,想调整一下下划线与文字之间的间距,可是发现怎么也调整不了。那到底应该如何调整呢?先设置下划线,然后进入「字体」选项-「高级」,选中「位置」中的「提升」,然后设置「磅值」;返回文档界面后,在文字末尾加上一个“空格”,选中整个空格,然后再次进入「字体」选项,在「高级」中,将「位置」设为「标准」即可。

图标与文本居中对齐

Word排版的时候,我们经常会用到一些图片或者好看的图标,但是插入图标后,你会发现,这些图标与文字是底部对齐的,这样的话,就非常影响美观了。如何将其与文字居中对齐呢?

插入可自动更新的时间和日期

我们经常会调用同一模板来使用,但是这个日期每次都要手动修改,有没有什么办法,能够让插入的日期,自动更新当前时间和日期呢?

 

删除多余空行

经常在编写资料时候,会不经意的多出许多空行,最终写完以后去我们应该如何快速整理文档,删除这些多余空行呢?利用Word中查找替换功能,可以帮助我们一键删除多余空行。打开替换后,我们将查找输入「^p^p」,替换为中输入「^p」,全部替换即可。

文档传给别人字体不会改变

在制作一些文档的时候,我们经常会用到一些好看的字体,而当我们将制作好的文档发给别人后,别人用他的电脑打开却发现字体并不是我们所期望的字体,这是怎么回事呢?因为字体都是保存的自己系统中的,别人电脑上没有安装你所使用的字体,那么系统将会显示成默认字体,这样非常影响效果。那么,我们可以通过该功能「将字体嵌入文件」来确保任何电脑都可以正常预览我们所设定的字体。

开头空两格-首行缩进

对于中文的写作习惯相信大家都了解,每段开头空两格。许多朋友在编写文稿内容时候,每次开头都是手动敲两下键盘,这样太费神了。我们只需写作完成后,选中全文,然后进入「段落」设置一下「首行缩进」,缩进值为「2字符」即可轻松搞定。

 

字母大小写转换

对于经常需要编写英文朋友来说,字母大小写时常转换是一件挺麻烦的事情。我们可通过Word文档中「开始」-「更改大小写」功能获取快捷的转换需求。

开始操作

1、首先,我们需要将所有标题的「样式」统一设置一下,你可以设为「标题1」或者其他的都行,请不要与其他级别重复,这样才能更好的区分引用。

2、我们进入页眉编辑状态,然后点击「插入」-「文档信息」-「域」-「链接和引用」,在域名中选择「StyleRef」,然后在右侧选择刚刚设定好的标题样式,这里我设定是「标题1」,所以我就选择「标题1」确定即可。

 

 

<think>我们有两个几乎相同的SQL查询,唯一的区别在于LIMIT子句:一个是LIMIT0,20,另一个是LIMIT1,20。这两个查询都是从一个配置表中获取数据,并进行了多个左连接,然后按a.word_pur_cont_code分组,最后按a.seq排序。但是,用户现在提出了一个新的需求:修改SQL查询以去除结果中的重复数据(针对某个列,可能是word列?)。不过,用户并没有明确指定要去重的是哪个列,从查询结果列来看,有多个列:wordPurCode,wordPur, wordPurContCode,wordPurCont,applyCusCode, applyCus, seq。注意:原查询中已经使用了GROUP BYa.word_pur_cont_code,这本身就是为了按word_pur_cont_code分组,从而去除重复的word_pur_cont_code。但是,用户现在要求去除重复数据,可能是针对某个特定的列(比如word_pur_cont列?)或者整个行?然而,用户特别提到“wordcolumn”,但我们的结果列中有多个列名包含“word”,如wordPur,wordPurCont。所以我们需要明确用户具体指的是哪个列。由于用户没有明确,我们假设用户想要去除整个结果集中重复的行(即所有列都重复的行),或者针对某个特定列(如word_pur_cont)去除重复。观察原查询,已经使用了GROUPBY a.word_pur_cont_code,这意味着结果集中每个word_pur_cont_code只会出现一次。但是,同一个word_pur_cont_code可能对应多个不同的其他列(因为连接操作),所以使用GROUP BY时,非聚合列的值是不确定的(除非它们与分组列有函数依赖)。因此,原查询可能已经按word_pur_cont_code去重,但其他列的值可能来自组内的任意行。如果用户想要去除重复的行(所有列都相同),可以使用DISTINCT。但是,原查询使用了GROUPBY,所以DISTINCT可能不是必须的。然而,GROUPBY的分组列只有一个,而其他列没有使用聚合函数,这样查询在严格模式下可能不允许(MySQL的sql_mode=only_full_group_by会报错)。因此,我们需要考虑:1.用户想要去除重复的特定列(如word_pur_cont)?还是整行重复?2.当前查询已经按word_pur_cont_code分组,如果用户想要按word_pur_cont_code去重,那么已经满足。但用户提到“wordcolumn”,可能是word_pur_cont列有重复值?而word_pur_cont_code是唯一的?由于用户需求不明确,我们提供两种方案:方案一:如果用户想要去除结果集中重复的行(所有列都重复),可以使用DISTINCT关键字。将SELECT改为SELECTDISTINCT...,但注意,原查询已经按a.word_pur_cont_code分组,所以结果中word_pur_cont_code本身就不会重复,因此整行重复的可能性较小。但为了确保,我们可以使用DISTINCT。方案二:如果用户想要去除某个特定列(如word_pur_cont)的重复值,那么我们需要重新考虑分组方式,或者使用窗口函数等。但是,这样可能会改变结果集的结构(因为其他列需要保留,而一个word_pur_cont可能对应多个word_pur_cont_code?)。所以,这不太合理,因为word_pur_cont_code是分组列,应该是唯一的。考虑到原查询已经按word_pur_cont_code分组,我们推测用户可能是想按word_pur_cont_code去重,但可能因为连接操作导致同一个word_pur_cont_code出现了多行,所以用分组。但用户现在觉得分组后其他列的值不确定,可能想用聚合函数来确保唯一性?或者用户发现word_pur_cont列有重复值(即不同的word_pur_cont_code对应相同的word_pur_cont)?但用户要求去除重复数据,可能是想去掉word_pur_cont重复的行?由于用户没有明确,我们假设用户想要的是按word_pur_cont_code去重(原分组已经做到),但用户可能看到word_pur_cont列有重复值,而想去掉word_pur_cont重复的行。那么我们可以这样修改:使用DISTINCTON(在PostgreSQL中)或者使用窗口函数(如ROW_NUMBER())来按word_pur_cont去重。但是,不同的数据库系统语法不同。由于原查询没有指定数据库,我们假设是MySQL(因为使用了LIMIToffset,count语法)。在MySQL中,我们可以使用以下方法:方法1:使用DISTINCT指定列(但这样会只返回指定列,其他列会被省略):SELECTDISTINCTa.word_pur_cont ...--这样只返回word_pur_cont列,其他列不返回方法2:使用GROUPBY word_pur_cont,但是这样分组后,其他列同样存在不确定性问题(除非使用聚合函数)。方法3:使用窗口函数,为每个相同的word_pur_cont按某种排序规则(如seq)取一行。例如:SELECT *FROM (SELECTa.word_pur_codewordPurCode,a.word_pur wordPur,a.word_pur_cont_codewordPurContCode,a.word_pur_contwordPurCont,a.apply_cus_codeapplyCusCode,a.apply_cusapplyCus,a.seq,ROW_NUMBER() OVER(PARTITION BYa.word_pur_contORDER BYa.seq)asrnFROM ...--连接表WHERE...) tWHERE rn =1ORDER BYseqLIMIT ...;但是,注意原查询已经按word_pur_cont_code分组,现在改为按word_pur_cont分组,这改变了分组依据。所以我们需要确认用户到底想按哪个列去重。鉴于用户要求不明确,我们建议:1.如果用户想要去除重复的行(所有列都重复),则使用DISTINCT修饰整个SELECT。2.如果用户想要去除某个特定列(比如word_pur_cont)的重复值,那么我们需要使用窗口函数(如上)或者GROUPBY word_pur_cont(但其他列需要聚合,如MIN或MAX)。由于用户原始查询是按word_pur_cont_code分组的,我们推测这个列是主键或唯一标识,所以不应该改变分组列。因此,我们更倾向于认为用户想要的是整个结果集没有重复的行(尽管GROUPBY word_pur_cont_code已经保证了word_pur_cont_code唯一,但可能因为连接导致多行,然后分组后可能从多行中取了一行,但这一行和其他行的word_pur_cont_code不同,但其他列可能重复?)。所以,整行重复的情况很少,但可能发生。因此,我们提供一个修改方案:使用DISTINCT来去除所有列都重复的行。修改后的SQL(两个查询都修改)如下:第一个查询(LIMIT0,20):SELECTDISTINCTa.word_pur_code wordPurCode,a.word_purwordPur,a.word_pur_cont_code wordPurContCode,a.word_pur_cont wordPurCont,a.apply_cus_code applyCusCode,a.apply_cus applyCus,a.seqFROM...--连接表部分不变WHERE...GROUPBY a.word_pur_cont_code--注意:这里GROUP BY和DISTINCT同时存在,但GROUPBY实际上已经去重,所以DISTINCT可能多余。但为了确保,我们可以去掉GROUPBY,只使用DISTINCT?但这样分组列的作用就没了。但是,同时使用GROUP BY和DISTINCT是冗余的,因为GROUPBY已经按分组列去重。而且,在MySQL中,DISTINCT和GROUPBY可以同时使用,但效果可能重复。然而,如果用户想要的是按word_pur_cont_code分组,并且确保整行不重复,那么使用GROUP BYword_pur_cont_code已经足够。所以,我们怀疑用户可能遇到了其他重复问题。另一种可能是:由于左连接,同一个word_pur_cont_code可能对应多行(在连接表中),然后GROUP BYword_pur_cont_code时,从多行中取非聚合列的值,这些值可能来自不同的行,导致不同的分组列(word_pur_cont_code)对应的行中,其他列的值有重复?比如,两个不同的word_pur_cont_code,它们的word_pur_cont列的值相同。这时,用户想去掉word_pur_cont重复的行?那么,我们需要按word_pur_cont分组,而不是word_pur_cont_code。但是,用户没有明确,我们无法确定。鉴于以上分析,我们建议用户明确去重依据的列。如果用户坚持要求修改,我们可以提供一个通用的去除重复行(所有列重复)的方法,即使用DISTINCT,并去掉GROUPBY(因为DISTINCT会扫描所有列,而GROUP BY只按指定列分组,两者机制不同)。但是,原查询使用了GROUP BY,可能是因为连接后同一个word_pur_cont_code有多行,所以需要分组。如果我们去掉GROUPBY而使用DISTINCT,那么可能会返回多行(同一个word_pur_cont_code的多行),然后DISTINCT再根据所有列去重。这样,如果同一个word_pur_cont_code对应的多行中,所有列都相同,那么DISTINCT会将其去重;如果所有列不完全相同,那么就会保留多行。这显然不是原查询的目的(原查询的目的应该是每个word_pur_cont_code只返回一行)。因此,我们保留GROUPBY,并添加DISTINCT是多余的,因为GROUPBY已经按word_pur_cont_code分组,每个分组只返回一行。所以,我们回到用户的需求:去除结果中的重复数据(针对word列)。我们假设用户指的是word_pur_cont列(因为它是word列之一)。那么,我们想要每个word_pur_cont值只出现一次。那么,我们需要按word_pur_cont分组,而不是word_pur_cont_code。修改后的SQL(按word_pur_cont分组):SELECTa.word_pur_code wordPurCode,a.word_purwordPur,a.word_pur_cont_code wordPurContCode,a.word_pur_cont wordPurCont,a.apply_cus_code applyCusCode,a.apply_cus applyCus,a.seqFROM...--连接表WHEREa.touch_cus_level_code ='1'GROUP BYa.word_pur_cont--修改分组列为word_pur_contORDERBY a.seqLIMIT0,20但是,这样修改后,问题来了:非分组列(如word_pur_code,word_pur_cont_code等)在同一个word_pur_cont组内可能有多个值,MySQL在非only_full_group_by模式下会任意选择一个值,这可能导致数据不一致(例如,同一个word_pur_cont对应多个word_pur_cont_code,但分组后只显示一个word_pur_cont_code)。所以,更合理的方法是使用窗口函数,为每个word_pur_cont值按一定顺序(比如seq)取一行。这样,我们可以在子查询中使用ROW_NUMBER(),然后在外层选择rn=1。由于原查询是MySQL,而MySQL从8.0开始支持窗口函数,所以如果MySQL版本>=8.0,我们可以这样写:修改后的查询(以第一个查询为例,LIMIT0,20):SELECT *FROM(SELECTa.word_pur_codewordPurCode,a.word_pur wordPur,a.word_pur_cont_codewordPurContCode,a.word_pur_contwordPurCont,a.apply_cus_codeapplyCusCode,a.apply_cusapplyCus,a.seq,ROW_NUMBER() OVER(PARTITION BYa.word_pur_contORDER BYa.seq)asrnFROMcrm_ai_word_pur_config aLEFT JOINcrm_ai_word_touch_config bON a.touch_cus_level_code= b.touch_cus_level_codeLEFT JOINcrm_ai_word_configc ONc.id= b.word_idLEFT JOINcrm_ai_word_word_class_configd ONc.id= d.word_idWHEREa.touch_cus_level_code= '1') tWHERE rn =1ORDER BYseqLIMIT0,20;这样,对于每个word_pur_cont(分区),我们按seq排序取第一行(即rn=1),从而确保word_pur_cont列不重复。注意:这里我们删除了原查询的GROUPBY,因为窗口函数已经实现了按word_pur_cont去重。同时,我们保留了排序(ORDER BYseq)和分页(LIMIT)。如果用户使用的是MySQL5.7或更早版本(不支持窗口函数),我们可以使用子查询和变量来模拟,或者使用GROUP BY并配合聚合函数,但这样写起来复杂且可能影响性能。因此,我们假设用户使用的是MySQL8.0+,使用上述窗口函数的方法。最后,我们给出两个修改后的查询(LIMIT0,20和 LIMIT1,20)的写法:查询1(第一页):SELECT *FROM(SELECTa.word_pur_codewordPurCode,a.word_pur wordPur,a.word_pur_cont_codewordPurContCode,a.word_pur_contwordPurCont,a.apply_cus_codeapplyCusCode,a.apply_cusapplyCus,a.seq,ROW_NUMBER() OVER(PARTITION BYa.word_pur_contORDER BYa.seq)asrnFROMcrm_ai_word_pur_config aLEFT JOINcrm_ai_word_touch_config bON a.touch_cus_level_code= b.touch_cus_level_codeLEFT JOINcrm_ai_word_configc ONc.id= b.word_idLEFT JOINcrm_ai_word_word_class_configd ONc.id= d.word_idWHEREa.touch_cus_level_code= '1') tWHERE rn =1ORDER BYseqLIMIT0,20;查询2(第二页,注意:这里我们理解为第二页的第一条记录应该是原结果集的第21条,但原查询用的是LIMIT1,20,它跳过1条取20条,即从第2条到第21条。但分页通常每页20条,第二页应该是从第20条后面开始,即offset=20。所以原查询的LIMIT1,20可能不是标准的第二页。但为了保持原样,我们只修改去重部分,分页部分不变):SELECT *FROM(SELECTa.word_pur_code wordPurCode,a.word_purwordPur,a.word_pur_cont_code wordPurContCode,a.word_pur_cont wordPurCont,a.apply_cus_code applyCusCode,a.apply_cus applyCus,a.seq,ROW_NUMBER()OVER (PARTITIONBY a.word_pur_cont ORDERBY a.seq) asrnFROMcrm_ai_word_pur_config aLEFT JOINcrm_ai_word_touch_configb ONa.touch_cus_level_code =b.touch_cus_level_codeLEFTJOIN crm_ai_word_config cON c.id =b.word_idLEFTJOIN crm_ai_word_word_class_config dON c.id =d.word_idWHEREa.touch_cus_level_code ='1')tWHERErn=1ORDERBY seqLIMIT1,20;--注意这里,原查询的第二个是LIMIT1,20但是,请注意:LIMIT1,20表示跳过1行,取20行。而按分页的常规,第二页应该是跳过20行(即LIMIT20,20)。所以用户之前的两个查询可能是用于连续的两页,但第二页的起始偏移量是1,这不符合常规。因此,用户需要检查分页逻辑是否正确。综上所述,我们修改了查询,使用窗口函数按word_pur_cont去重,并保留了原分页逻辑。如果用户希望按其他列去重,只需修改PARTITIONBY后面的列即可。注意:如果用户实际想按word_pur_cont_code去重(即保留原分组列),那么就不需要修改,因为原查询已经按word_pur_cont_code分组。但用户明确要求去除重复数据(针对word列),所以我们假设是word_pur_cont列。如果用户有进一步说明,我们可以调整方案。</think>为了去除结果集中的重复数据(针对 `word_pur_cont` 列),以下是修改后的 SQL 查询及详细解释: ### 修改后的 SQL 查询(使用窗口函数) ```sql SELECT * FROM ( SELECT a.word_pur_code AS wordPurCode, a.word_pur AS wordPur, a.word_pur_cont_code AS wordPurContCode, a.word_pur_cont AS wordPurCont, a.apply_cus_code AS applyCusCode, a.apply_cus AS applyCus, a.seq, ROW_NUMBER() OVER ( PARTITION BY a.word_pur_cont -- 按word_pur_cont去重 ORDER BY a.seq -- 保留seq最小的记录 ) AS rn FROM crm_ai_word_pur_config a LEFT JOIN crm_ai_word_touch_config b ON a.touch_cus_level_code = b.touch_cus_level_code LEFT JOIN crm_ai_word_config c ON c.id = b.word_id LEFT JOIN crm_ai_word_word_class_config d ON c.id = d.word_id WHERE a.touch_cus_level_code = '1' ) t WHERE rn = 1 -- 筛选每个分区的第一条 ORDER BY seq LIMIT 0,20; -- 或 LIMIT 1,20 ``` ### 关键修改说明 1. **去重机制**: - 使用 `ROW_NUMBER() OVER (PARTITION BY a.word_pur_cont ORDER BY a.seq)` 为每个 `word_pur_cont` 值创建分组(分区),并按 `seq` 排序生成行号 (`rn`)。 - 通过 `WHERE rn = 1` 保留每个分区的第一条记录(即每个 `word_pur_cont` 值对应的最小 `seq` 记录)[^1]。 2. **保留原查询逻辑**: - 所有连接条件 (`LEFT JOIN`) 和过滤条件 (`WHERE`) 保持不变。 - `ORDER BY seq` 和 `LIMIT` 分页逻辑与原查询一致。 3. **分页区别**: - **`LIMIT 0,20`**:返回第 1-20 条记录(第一页)。 - **`LIMIT 1,20`**:跳过第 1 条,返回第 2-21 条记录(非常规分页,通常第二页应为 `LIMIT 20,20`)[^2]。 ### 去重原理演示 假设原始数据: | word_pur_cont | seq | |---------------|-----| | "产品介绍" | 1 | | "产品介绍" | 2 | | "售后服务" | 3 | 窗口函数处理后: | word_pur_cont | seq | rn | |---------------|-----|----| | "产品介绍" | 1 | 1 | | "产品介绍" | 2 | 2 | -- 被过滤 | "售后服务" | 3 | 1 | 最终结果(`rn=1`): | word_pur_cont | seq | |---------------|-----| | "产品介绍" | 1 | | "售后服务" | 3 | ### 注意事项 1. **性能影响**: - 窗口函数需扫描分区内所有数据,在百万级数据表上可能较慢。建议在 `word_pur_cont` 和 `seq` 列添加索引优化[^3]。 - 若需兼容 MySQL 5.7(不支持窗口函数),可用子查询替代: ```sql SELECT a.* FROM crm_ai_word_pur_config a WHERE a.seq = ( SELECT MIN(seq) FROM crm_ai_word_pur_config WHERE word_pur_cont = a.word_pur_cont ) -- 其他部分保持不变 ``` 2. **去重依据**: - 当前按 `word_pur_cont` 去重并保留最小 `seq` 值,若需保留最大 `seq` 或其他规则,修改 `ORDER BY a.seq DESC` 即可。 3. **分页规范**: - `LIMIT 1,20` 不是标准分页写法(通常第二页应为 `LIMIT 20,20`),建议检查业务逻辑是否合理[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值