簡體   English   中英

加入4個表並在第5個表中更新MySql

[英]Join 4 tables and update in 5th table MySql

我正在嘗試加入4個表並更新第5個表

INSERT INTO relation_table(cid,pid,liid,lnid,lgid,l_key)
SELECT  a.cid,
        a.pid,
        b.liid,
        c.lnid,
        d.lang,
        md5("a.cid a.pid b.liid c.lnid d.lang")
FROM links a
        INNER JOIN links_table b
            ON a.lurl = b.lurl
        INNER JOIN lname_table c
            ON a.lname = c.lname
        INNER JOIN lang_table d
            ON a.lang = d.lang
where a.lurl = "google"

主表鏈接具有所有值,其他3個表是具有自己的ID +值的子表,我將使用這些ID +值進行連接,然后在關系表中更新那里的ID。

編輯

抱歉,我沒有提到錯誤,它的md5 [Err] 1062-當我嘗試添加1條記錄的確定但第二條記錄不起作用時,鍵'l_key'的條目'78527d845cc56e5d28e019d22565f2d7'重復了,b.liid在第二個中是不同的。 ..但它的md5仍然與第一個相同。 它不起作用,我不確定這是否是正確的方法。

請幫忙

當前,您始終將相同的字符串傳遞給md5()函數。 對於您INSERT的第一條記錄沒有問題,但是一旦您嘗試插入第二條記錄,就會出現重復輸入錯誤。

md5("a.cid a.pid b.liid c.lnid d.lang")

我相信您反而打算基於5個標識符構建一個唯一的字符串。 您可以嘗試以下方法:

md5(CONCAT(a.cid, a.pid, b.liid, c.lnid, d.lang))

問題出在md5()函數上:

md5("a.cid a.pid b.liid c.lnid d.lang")

這樣,將生成固定的“ a.cid a.pid b.liid c.lnid d.lang”字符串的md5哈希。 采用

md5(concat(a.cid, a.pid, b.liid, c.lnid, d.lang))

代替。 另外,您應該考慮查詢是否可以多次返回同一組ID。 如果是,則在選擇中使用distinct關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM