天天看點

mysql 兩表關聯查詢 group by having

已有的資料庫字段和資料

主表字段和資料: a表

aid name creator
1 測試一 張三
2 測試二 李四
3 測試三 王五

關聯表的字段和資料: b表

bid aid deptname
1 1 國土局
2 2 水利局
3 3 經信局
4 1 規劃節點一
5 1 規劃節點二
6 2 規劃節點一
7 2 規劃節點二
8 2 規劃節點三

問題描述

1.查詢主表有哪些資料國土環節已辦結,哪些資料在國土環節未辦結?

2.查詢主表有哪些資料規劃環節已辦結(隻有當規劃節點一二三都完成後才算辦結),哪些資料在規劃環節未辦結?

sql語句

sql拆分 一步步來

1.首先查詢關聯表

mysql 兩表關聯查詢 group by having

模糊查詢、根據aid分組、再根據count過濾

mysql 兩表關聯查詢 group by having

2.關聯查詢

查詢已辦結:

SELECT 
	 distinct a.aid,
	 a.name,
	 a.creator
FROM 
	a a ,b b 
where a.aid  in (select aid from b where deptname = '國土局' )  
           

查詢結果

aid name creator
1 測試一 張三
SELECT 
	 distinct a.aid,
	 a.name,
	 a.creator
FROM 
	a a ,b b 
where a.aid  in 
(select aid from b where deptname LIKE '%規劃環節%' group by aid HAVING COUNT(0) >=3 )  
           

查詢結果

aid name creator
2 測試二 李四

未辦結 則是 not in