mysql 查找表中不包含另一張表的數據的記錄

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章