mysql 查詢表中不包含另一張表的資料的記錄
阿新 • • 發佈:2019-01-31
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