tabletouser表
submit 表
查询submit表中的记录,只需要年份(time)和表名(tab_id) ,但是如果在tabletouser表中存在相同的年份(year)和表(tabletouser)则不能从submit中提取出
开始想从 submit表中得到年和表,从tabletouser中得到年和表,从submit中去除tabletouser的记录,但是效果不好,因为同时包含两个字段,开始学mysql,技术有限,没能实现
最后,想到这个方法:
两个表中都有年和表字段,将这两个字段拼成字符串,形成一个标志,然后用not in 即可查出submit中不包含tabletouser中数据的记录
SELECT DISTINCT tab_id,DATE_FORMAT(t.`time`,'%Y') FROM tzb_submit t WHERE LEFT(t.`submit_id`,7) NOT IN (SELECT CONCAT(a.`year`,LPAD(a.`table_id`,3,0)) submit_id FROM tabletouser
a)
字符串格式化
LPAD(a.`table_id`,3,0)《LPAD(str,length,str)》 从a.`table_id`的左边添加0,直到字符长度为3,如果本身超过3,则从左截取3个长度 3--》003 12-》012
字符串合并
CONCAT(str,str,..)合并两个字符串 2014+ 003——》2014003
字符串截取
LEFT(t.`submit_id`,7)从t.submit_id的左边开始截取7位长度,2014003002-》2014003