最近在使用union all的过程中,遇到了一些问题,又GET了一个知识点,作为一个总结,记录一下~
where条件的坑:
案例,若一个字段的值为1,2,NULL(自然空,而不是'NULL')这时,如果代码这样写:
select id,data,name
from aa
where name <> 'us'
那么,为空的这一条记录是不会被筛选出来的。
id | date | name |
---|---|---|
3914810511 | 2017-06-15 | hk |
3914851966 | 2017-06-15 | hk |
name为空的这一条就不会显示。
如果,这种情况就要通过转化才能达到想要的效果:
select *id,data,name
from a
where coalesce(name,0) <> 'us'
结果:
id | date | name |
---|---|---|
3912115625 | 2017-06-15 | NULL |
3914810511 | 2017-06-15 | hk |
3914851966 | 2017-06-15 | hk
|
下面来讲一下full join,也会出现这样的问题,现在同一张表full join:
select a.id as aid,
a.date as adate,
coalesce(a.name,b.name) as name,
b.id as bid,
b.date as bdate
from aa a
full join aa b
on a.name = b.name
结果为:
aid | adate | name | bid | bdate |
---|---|---|---|---|
3912115625 | 2017-06-15 | NULL | NULL | NULL |
NULL | NULL | NULL | 3912115625 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3920408638 | 2017-06-15 | us | 3920408638 | 2017-06-15
|
因此,也要做相应的处理才可以:
select a.id as aid,
a.date as adate,
coalesce(a.name,b.name) as name,
b.id as bid,
b.date as bdate
from aa a
full join aa b
on coalesce(a.name,0) = coalesce(b.name,0)
结果为:
aid | adate | name | bid | bdate |
---|---|---|---|---|
3912115625 | 2017-06-15 | NULL | 3912115625 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3920408638 | 2017-06-15 | us | 3920408638 | 2017-06-15 |
left join不会有这种问题,我也测试了一下:
select a.id as aid,
a.date as adate,
coalesce(a.name,b.name) as name,
b.id as bid,
b.date as bdate
from aa a
left join aa b
on a.name = b.name
结果为:
aid | adate | name | bid | bdate |
---|---|---|---|---|
3912115625 | 2017-06-15 | NULL | NULL | NULL |
3914810511 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3920408638 | 2017-06-15 | us | 3920408638 | 2017-06-15
|
那么join呢,我也测试了一下:
select a.id as aid,
a.date as adate,
coalesce(a.name,b.name) as name,
b.id as bid,
b.date as bdate
from aa a
join aa b
on a.name = b.name
结果为:
aid | adate | name | bid | bdate |
---|---|---|---|---|
3914810511 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3920408638 | 2017-06-15 | us | 3920408638 | 2017-06-15 |
也有这样的问题,为null的结果不展示。
select a.id as aid,
a.date as adate,
coalesce(a.name,b.name) as name,
b.id as bid,
b.date as bdate
from aa a
join aa b
on coalesce(a.name,0) = coalesce(b.name,0)
aid | adate | name | bid | bdate |
---|---|---|---|---|
3912115625 | 2017-06-15 | NULL | 3912115625 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914810511 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914851966 | 2017-06-15 |
3914851966 | 2017-06-15 | hk | 3914810511 | 2017-06-15 |
3920408638 | 2017-06-15 | us | 3920408638 | 2017-06-15
|
这次探讨的问题就到这里啦,如果还有别的部分,我后续会在更新~
在多媒体通信领域,MRCP(Media Resource Control Protocol)协议被广泛用于控制语音识别和合成等媒体资源。UniMRCP是一个开源的MRCP实现,提供了客户端和服务端的库。UmcFramework是一个基于UniMRCP客户端库的示例应用程序框架,它帮助开发者快速集成和测试MRCP客户端功能。本文将详细介绍如何使用UmcFramework和unimrcpclient.xml配置文件连接到多个SIP设置,以及如何用C代码进行示例说明。
文章浏览阅读3k次。报错:java.net.ProtocolException: Server redirected too many times (20)1.没有检查到cookie,一直循环重定向。解决:CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));URL url = new URL(url); ..._java.net.protocolexception: server redirected too many times (20)
文章浏览阅读4.1k次。问题这是部分报错信息2019-07-11 14:03:34.283 WARN [restartedMain][DirectJDKLog.java:175] - Failed to scan [file:/D:/repo/org/apache/derby/derby/10.14.2.0/derbyLocale_ja_JP.jar] from classloader hierarchyjava...._failed to scan from classloader hierarchy
文章浏览阅读2.8k次,点赞3次,收藏7次。在MATLAB中,ones函数用于创建一个指定大小的由1组成的矩阵或数组。_matlab中ones函数
文章浏览阅读3.9w次,点赞2次,收藏9次。 在使用电脑办公过程中,安装应用程序时难免遇到无法安装或者无法正常启动的问题,这对我们使用电脑带来了诸多不便。那遇到应用程序无法正常启动的问题要如何解决呢?相信大家肯定都是十分疑问的,每次都是只能忍痛重新安装软件。今天,小编就和大家探讨下应用程序无法正常启动的解决方法,帮助大家排忧解难。0xc000007b电脑图解1 第一种方案:SFC检查系统完整性来尝试修复丢失文件 1、打开电脑搜索输入cmd.exe,选择以管理员身份运行,跳出提示框时选择继续。0xc000007b电脑图解2_photoshop应用程序无法正常启动0xc000007b。请单击“确认”关闭应用程序。
文章浏览阅读396次。1、概念 REDO LOG是Oracle为确保已经提交的事务不会丢失而建立的一个机制。实际上REDO LOG的存在是为两种场景准备的:实例恢复(INSTANCE RECOVERY);介质恢复(MEDIA RECOVERY)。 实例恢复的目的是在数据库发生故障时,确保BUFFER CACHE中的数据不会丢失,不会造成数据库的..._oracle 实例恢复和介质恢复
文章浏览阅读418次。概述说明CAS内置了密码找回和密码修改的功能; 密码找回功能是,系统会吧密码重置的连接通过邮件或短信方式发送给用户,用户点击链接后就可以重置密码,cas还支持预留密码重置的问题,只有回答对了,才可以重置密码;系统可配置密码重置后,是否自动登录; 密码修改功能是,用户登录后输入新密码即可完成密码修改。安装步骤`1. 首先,搭建好cas sso server您需要按..._修改cas默认用户密码
文章浏览阅读141次。之前几章演示的熔断,降级 都是 RestTemplate + Ribbon 和RestTemplate + Hystrix ,但是在实际开发并不是这样,实际开发中都是 Feign 远程接口调用。Feign + Hystrix 演示: eruka(略)order 服务工程: pom.xml<?xml version="1.0" encoding="U..._this is order 服务工程
文章浏览阅读3.4k次,点赞35次,收藏43次。学习率是影响目标检测精度和速度的重要因素之一。合适的学习率调度策略可以加速模型的收敛和提高模型的精度。在YOLOv7算法中,可以使用基于余弦函数的学习率调度策略(Cosine Annealing Learning Rate Schedule)来调整学习率。
文章浏览阅读4k次,点赞4次,收藏9次。 linux中进程退出函数:exit()和_exit()的区别(1)_exit()执行后立即返回给内核,而exit()要先执行一些清除操作,然后将控制权交给内核。(2)调用_exit函数时,其会关闭进程所有的文件描述符,清理内存以及其他一些内核清理函数,但不会刷新流(stdin, stdout, stderr ...). exit函数是在_exit..._linux结束进程可以用哪些函数,它们之间有何区别?
文章浏览阅读134次。select 5000/10000.0 --想变成0.5select 5500/10000.0 --想变成0.55select 5550/10000.0 --想变成0.555select 5555/10000.0 --想变成0.5555其结果分别为:0.5000000 0.5500000 0.5550000 0.5555000一、如果想去掉数字5后面多余的0 ,需要转化一下:selec..._sql server 去小数 0
文章浏览阅读3.1k次。例一:import { Injectable } from '@angular/core';import { Observable } from 'rxjs';import { User } from "./model/User";import { map } from 'rxjs/operators';import { Http, Response, Headers, RequestOp..._angular6,requestoptions改成了什么