文档表
document (id,case_num,document_name)
案件表
case (id,case_num,case_name,status)
文档表的 case_num 对应多个 案件表的 case_num
文档表的 case_num 格式以 “,号”分隔,例如:
document 表
案件表
直接给几条表记录上来吧,这样光说都不知道数据是怎么样子的
用sql语句应该没办法写,自己写个存储过程函数吧
因为mysql里面没有split函数,没办法把你文档document表里面的字符串化的case_num拆解开来
https://www.cnblogs.com/Claire6649/p/6871935.html
SELECT * FROM case
c , document d where c.status = 1 and LOCATE(c.case_num, d.case_num) and c.case_num = 'def';
不知道是不是你想要的
#MySQL 写法
SELECT d.*,COUNT(*) AS d_cnt,SUM(IF(c.status
=1,1,0)) AS c_cnt
FROM case
c
JOIN document
d ON FIND_IN_SET(c.case_num,REPLACE(d.case_num,',',','))
WHERE 1
GROUP BY d.id
HAVING d_cnt=c_cnt
如果你是在hive中的话,你可以document表里面的字符串化的case_num进行split之后,进行行转列,保证一行的case_num只有一个,然后再进行join进行
min(status)=1的判断就好了
第三个表是什么结构呢?比如一个document对应两个case,在第三个表中是一条记录还是两条记录呢?