返回

mysql-为什么第一次查询结果为空,但第二次查询有数据

发布时间:2022-06-03 19:46:31 643
# 数据库

MYSQL 5.7,相同的SQL,在查询表数据没有变化的情况下,第一次查询为空,但第二次查询有数据

没有HAVING rank=2, 情况就不会如此

select * from
(select 
 t1.company_name, 
 t1.acceptance_date, 
 t1.project id, 
 rank 
from 
table1 t1 
left join 
(SELECT 
id, 
company_name, 
acceptance_date, 
project_id, 
ct, 
if( @p=a.company_name,@r :=@r +a.ct,@r:=a.ct) as rank, 
@p:=a.company_name from 
(SELECT 
id, 
company_name, 
acceptance_date, 
project id, 
1 AS ct 
FROM table1 
WHERE company_name is not null 
AND IS_DELETED = 0 
order by company_name, acceptance_date 
)as a
)t2 
on t1.id=t2.id)c 
HAVING rank=2



CREATE TABLE table1( id INT, project_id INT, company_name VARCHAR(100) NOT NULL, acceptance_date DATE, is_deleted INT PRIMARY KEY (id ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (1,1, "company1","2020/12/31",0); insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (2,2, "company1","2021/12/31",0); insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (3,3, "company1","2022/12/31",0); insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (4,4, "company2","2021/1/1",0); insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (5,5, "company3","2020/2/3",0); insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (6,6, "company4","2020/12/3",0); insert into table1(id,project_id,company_name,acceptance_date,is_deleted) value (7,7, "company5","2020/10/3",0);
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像