-
2021-02-07 06:50:38
首先,看如下两个查询语句:
第一种
SELECT t.id, t.meetStyle, t.title,
count(p.id) AS personCount,
count(f.id) AS fileCount
FROM meeting_info t
LEFT JOIN meeting_person p
ON t.id= p.mId
LEFT JOIN meeting_file f
ON t.id=f.mId where t.ID='info0000000234'
第二种
SELECT t.id, t.meetStyle, t.title,
count(DISTINCT p.id) AS personCount,
count(DISTINCT f.id) AS fileCount
FROM meeting_info t
LEFT JOIN meeting_person p
ON t.id= p.mId
LEFT JOIN meeting_file f
ON t.id=f.mId where t.ID='info0000000234'
这两条语句虽然只有一词之差,实际却相差千里,因为第一条语句的查询结果和如下语句查询结果相同:
SELECt f1.id,f1.MeetStyle,f1.title,f1.personCount,f2.fileCount from
(SELECT t.id, t.meetStyle, t.title,
count(p.id) AS personCount
FROM meeting_info t
LEFT JOIN meeting_person p
ON t.id= p.mId
where t.ID='info0000000234' ) f1
,
(SELECT t.id, t.meetStyle, t.title,
count(f.id) AS fileCount
FROM meeting_info t
LEFT JOIN meeting_file f
ON t.id=f.mId where t.ID='info0000000234') f2
)
由上面两种查询可以看出,count(DISTINCT p.id)具有过滤当数值为空的情况,使其不再计入总数
更多相关内容 -
MYSQL查询以排除结果中包含空值的列
2021-01-19 09:05:13场景是我有两个表,我想使用PHP的搜索函数查询它们。有两个表,table_a和table_ab。table_a中有id、name、middle_auname、姓氏、case_auno columns和table_ab相似。...假设表a中有一列具有空值,我想要的是...场景是我有两个表,我想使用PHP的搜索函数查询它们。有两个表,table_a和table_ab。table_a中有id、name、middle_auname、姓氏、case_auno columns和table_ab相似。表b中的数据都是从另一个源导入的,而表a中的数据是由用户手动插入的。有一些实例表明表a和表b中有重复的数据。我想要的是从表b中删除重复的数据。假设表a中有一列具有空值,我想要的是从结果中排除该列。
+----------+----------+----------+ +----------+----------+----------+
| name | surname | case_num | | name | surname | case_num |
+----------+----------+----------+ +----------+----------+----------+
| john | wick | 1434 | | john | wick | null |
+----------+----------+----------+ +----------+----------+----------+
table_a table_b
+----------+----------+----------+
| name | surname | case_num |
+----------+----------+----------+
| john | wick | 1434 |
+----------+----------+----------+
| john | wick | null |
+----------+----------+----------+
现在我要查询这个表,只显示没有空值的结果
+----------+----------+----------+
| john | wick | 1434 |
+----------+----------+----------+
+----------+----------+----------+
| john | wick | null |
+----------+----------+----------+
但第一个问题是从结果中排除具有空值的行。这是我的问题。
SELECT * FROM created_view_table WHERE name LIKE ? OR surname LIKE ? OR case_num LIKE ? AND
case_num <> null;
SELECT * FROM created_view_table WHERE name LIKE ? OR surname LIKE ? OR case_num LIKE ? AND
case_num IS NOT null;
每当我搜索'%john%'时,它总是同时显示这两行,一行包含空值的列,另一行不包含空值的列。如果可能的话,我只想显示没有空值的结果。
-
如何在MYSQL中存在空值的GROUP_CONCAT?
2021-07-16 19:25:37I have a long query that returns multiple values for a primary key (from a LEFT join).For example : (only showing two fields, but there about 10 fields)LotID Size1 A1 B1 C2 ...I have a long query that returns multiple values for a primary key (from a LEFT join).
For example : (only showing two fields, but there about 10 fields)
LotID Size
1 A
1 B
1 C
2 null
3 B
4 A
4 B
When I use GROUP_CONACT, it returns as follows :
LotID Size
1 A,B,C
3 B
4 A,B
But what I actually want is :
LotID Size
1 A,B,C
2 null
3 B
4 A,B
I tried using
GROUP_CONCAT(CONCAT_WS(',', IFNULL(Size,''))) AS Sizes,
It returns :
LotID Sizes
1 A,B,C,,,
3 B,,
4 A,B,,
It does not return LotID=2, also aditional commas.
How could I do it to get clean records ?
解决方案
You must be doing something wrong with group_concat, because this:
select
lotid,
group_concat(size) size
from tablename
group by lotid
returns:
| lotid | size |
| ----- | ------------------ |
| 1 | A,B,C |
| 2 | null |
| 3 | B |
| 4 | A,B |
See the demo.
-
mysql排序让空值NULL排在数字后边
2021-01-19 08:46:15从现实项目需求出发;有一张城市表;里面有北京、上海、广州、...mysql>select*frombjy_order;+----+------+|id|city|+----+------+|1|北京||2|上海||3|广州||4|河北||5|天津||6|河南|+----+------+要求是让上海...从现实项目需求出发;
有一张城市表;里面有北京、上海、广州、河北、天津、河南6座城市;
mysql> select * from bjy_order;
+----+------+
| id | city |
+----+------+
| 1 | 北京 |
| 2 | 上海 |
| 3 | 广州 |
| 4 | 河北 |
| 5 | 天津 |
| 6 | 河南 |
+----+------+
要求是让上海排第一个、天津排第二个;
最简单粗暴的方法就是添加一个order_number字段;用来标识顺序的;然后通过order by order_number asc 排序
mysql> select * from bjy_order order by order_number asc;
+----+------+--------------+
| id | city | order_number |
+----+------+--------------+
| 2 | 上海 | 1 |
| 5 | 天津 | 2 |
| 1 | 北京 | 3 |
| 3 | 广州 | 4 |
| 4 | 河北 | 5 |
| 6 | 河南 | 6 |
+----+------+--------------+
这么做确实能满足需求;但是如果表里面有中国全部的32个省呢?
再如果来个全国的县市表几百个数据呢?而我们只是想让某几个值排最前面就好了;
就如人们大部分人只知道世界第一高峰是珠穆朗玛峰而不去关注第二第三一样;
我们应该首先想到的就是只给需要排在前面的加上排序数字;其他为NULL;
mysql> select * from bjy_order;
+----+------+--------------+
| id | city | order_number |
+----+------+--------------+
| 1 | 北京 | NULL |
| 2 | 上海 | 1 |
| 3 | 广州 | NULL |
| 4 | 河北 | NULL |
| 5 | 天津 | 2 |
| 6 | 河南 | NULL |
+----+------+--------------+
然后我们order by一下;
mysql> select * from bjy_order order by order_number asc;
+----+------+--------------+
| id | city | order_number |
+----+------+--------------+
| 1 | 北京 | NULL |
| 3 | 广州 | NULL |
| 4 | 河北 | NULL |
| 6 | 河南 | NULL |
| 2 | 上海 | 1 |
| 5 | 天津 | 2 |
+----+------+--------------+
然而即将成功的时候让人沮丧的事情发生了;那些为NULL的排在在最前面;
OK;下面有请今天的主角出场来解决这个问题;
我们来利用is null把sql给稍微改造一下即可;
mysql> select * from bjy_order order by order_number is null,order_number asc;
+----+------+--------------+
| id | city | order_number |
+----+------+--------------+
| 2 | 上海 | 1 |
| 5 | 天津 | 2 |
| 1 | 北京 | NULL |
| 3 | 广州 | NULL |
| 4 | 河北 | NULL |
| 6 | 河南 | NULL |
+----+------+--------------+
到此完美实现需求;
-
MySql 空值处理NULL处理
2022-04-01 15:40:39MySql 空值处理NULL处理 -
mysql进阶操作去重及空值处理篇(四)
2021-12-20 16:09:00此篇主要介绍去重和去重过程中空值的处理 源表部分内容 一、去重的四种方式 group by -- 去重时 空和null均参与计算 select name from demo.product_name group by name ; distinct select distinct ... -
MySQL:使用空值求平均值
2021-01-19 06:36:27SQL中的聚合函数(SUM,AVG,COUNT等)始终自动排除NULL.所以SUM(col)/ COUNT(col)= AVG(col) – 这很棒且一致.COUNT(*)的特殊情况计算每一行.如果组成一个带有NULL的表达式:A或B为A的B,则无论另一列为NULL,A B都将为... -
Mysql去空值
2013-04-15 13:31:33去除空值的方法: create table 表B select 列1,列2, IFNULL(列3,'I am NULL') as 列3, IFNULL(列4,-999) as 列4... from 表A; 解释:将表A中,若列3为NULL,则替换成字符串‘I am NULL’... -
如何查询空值与去除重复结果?
2020-08-10 21:13:09查询空值 在数据表创建之初,创建者可以指定某个字段是否为空值NULL。注意了,这个NULL既不代表0,也不代表空字符,而是代表一种未知的状态,比如不适用或者放着等将来有合适数据了再添加进去。 语法规则为: SELECT... -
如何在MySQL中跳过空白数据?
2021-07-16 17:24:00I wanted to skip blank data in MySQL.My sample query is:SELECT id, name, date from sample where name IS NOT NULL;Sample table:id name date1 24-04-20122 abc 23... -
SQLULDR2处理MySQL的空值
2021-01-28 03:45:04最近正好有这样的一个数据迁移需求, 并做了一些测试, 速度很不错, 但MySQL对于空值(NULL)的处理有些特殊, 在以前的SQLULDR2中, 空值输出成空的字符串, 如下所示. ICOL$,TABLE,4CON$,TABLE,U... -
sql查询去除空数据和null 字段
2022-04-19 14:58:191:在做需求时,发现数据库中出现null 或者为 空值,这种字段的数据并不是我想要的(在我的需求中) 2:在sql中填入字段就可以进行筛选 这是一个笔记,也是提供大家思考,有兴趣的可以一起交流。 and (字段 is not ... -
mysql count过滤空值,使其不将空数据计入条数
2016-08-22 09:51:03当mysql中使用count分组统计数据时,如果不想使空值计入总数,我们可以使用如下解决方法 1,首先看如下两个查询语句: (1) SELECT t.id, t.meetStyle, t.title, count(p.id) AS personCount, ... -
sql-MySQL,合并等效为空值?
2021-01-19 20:48:28MySQL中没有这样的函数,但是您可以开发自己的存储函数。 这里的主要困难是传递给函数的参数数量可能会有所不同。一种可能的解决方案是使用269507071157574574函数(请参见CONCAT_WS()函数)传递带有一组由分隔符分隔... -
mySQL中AVG()函数如何去除null值或0值求平均值
2022-04-01 20:20:45mySQL中AVG()函数如何去除null值或0值求平均值 -
MySQL批量去掉某个字段中的空格
2021-03-14 12:04:59Mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数。(1)mysql replace 函数语法:replace... -
Mysql中去除groupBy目标字段分组后数据为null的记录
2021-04-14 15:24:49SELECT DISTINCT SUM( vce.fie_charge ), SUM( vce.fie_current_charge ), fie_join_organization FROM vw_charge_entry AS vce ...想去除红线部分的数据 (即 别显示出来);可接借助having 函数 ,having 函. -
Mysql:查询列值为NULL的行记录
2019-05-06 16:21:38SELECT * FROM `student` WHERE name!='aaa1' 注意: where条件查询...查询字段值为NULL,mysql提供了专门的关键字 IS。 NULL在mysql中是未知的意思,就是类型,值都未知,所以正常的查询条件=,!=是无法查询出来... -
SQL过滤空值的方法
2021-12-25 18:09:05SQL过滤空值的三种方法: Where 列名 is not null Where 列名 != ‘null’ Where 列名 <> ‘null’ -
详解MySql基本查询、连接查询、子查询、正则表达查询
2021-02-02 05:26:462.2、按条件查询(1) 比较运算符> , < ,= , != (< >),>= , <=select * from STUDENT where STU_AGE>13;in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出IN关键字可以判断某个字段的值是否在指定的集合... -
用MySQL函数清除字符串首尾空白字符的方法
2020-09-11 04:58:13由于内容插入的时候没办法进行完全的过滤,所以审核这里就经常出问题,搞的头大,而MySQL的trim函数没办法去掉回车和换行,只能去掉多余的空格 -
mysql:一行中的多个列的平均值,忽略空值
2021-01-19 06:36:30)mysql:一行中的多个列的平均值,忽略空值对于许多记录,一个或多个这些列的值为空,因为外部数据库没有数据。它们都覆盖我的数据库的不同子集。我希望列t是它们的加权平均值(每个a..f都有我分配... -
MySQL语句批量去除括号及内容
2021-01-19 08:21:27我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$... begin II:=2021-01-16 17:49:22条件查询-模糊匹配PostgreSQL和SQL Server的模糊匹配lik... -
MySql基本查询、连接查询、子查询、正则表达查询讲解
2017-08-24 18:38:30(4)空值查询 IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下: IS [ NOT ] NULL 其中... -
MySQL LEFT JOIN NULL值
2021-01-26 02:04:29由于这是4个月后,我提出了...参考:MySQL LEFT JOIN - Values can be NULL我的SQL语句如下所示:SELECT cs.case_id, cs.child_firstname, gu.*FROM tblcases AS csLEFT JOIN tblguardians AS guON cs.case_id = gu.... -
使用MySQL中的AVG函数求平均值的教程
2021-02-08 00:10:14MySQL的AVG函数是用来求出各种记录中的字段的平均值。要了解AVG功能考虑EMPLOYEE_TBL表具有以下记录:mysql> SELECT * FROM employee_tbl;+------+------+------------+--------------------+| id | name | work_... -
MySQL游标循环取出空值的BUG
2021-01-18 22:01:16早上同事要我写个MySQL去除重复数据的SQL,想起来上次写过一篇MySQL去除重复数据的博客,使用导入导出加唯一索引实现的,但是那种方式对业务影响较大,所以重新写一个存储过程来删重复数据,这一写就写了一个上午,... -
mysql删除字段为空的数据
2021-01-18 21:11:30空值与NULL的区别 我们先来理解mysql中空值与NULL的区别是什么吧 一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串 是相同的。这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的。NULL是指没有... -
MySQL查询用法总结
2021-01-19 21:25:36= 不等于 小于 小于等于 > 大于 >= 大于等于 between A and B 指定的两个值之间 where col is null --查询空值 where col is not null --查询非空值 where col = '' --查询空字符串 where (条件1 and 条件2) or ... -
mysql怎么去除主键约束
2021-01-18 22:47:10我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$... begin II:=2021-01-16 17:49:22条件查询-模糊匹配PostgreSQL和SQL Server的模糊匹配lik...