2013-08-17 20 views
0

我想運行一個查詢,看起來像這樣:加入與重複不按預期工作

$DB->query("INSERT INTO table (
    SELECT s.value1, s.value2, s.value3, t.value1, u.value1, u.value2, u.value3, u.value4 
    FROM aTable AS s 
    LEFT JOIN aTable2 AS u ON u.uID = s.uid 
    WHERE u.spent < ". $needed ." 
    GROUP BY s.uid, s.fid) 
    ON DUPLICATE KEY UPDATE 
    value1 = VALUES(u.value1), 
    value2 = VALUES(u.value2), 
    value3 = VALUES(u.value3), 
    value4 = VALUES(u.value4); 
"); 

然而,這將返回錯誤:

Unknown column 'u.value1' in 'field list'

請注意,這是第一次我在這個級別上使用MySQL,所以我不知道DUPLICATE KEY UPDATE函數是如何工作的...

我對錶做的意圖是像緩存,因爲信息是從一些非常大的表格

+0

參見[文件](http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html )爲正確的語法。 – Sumurai8

+0

我看過文檔,但我簡直不明白。 – PeaceDealer

回答

0

values語句是指insert列列表中的值。你沒有這些上市,但猜測是:

ON DUPLICATE KEY UPDATE 
    value1 = VALUES(value1), 
    value2 = VALUES(value2), 
    value3 = VALUES(value3), 
    value4 = VALUES(value4); 
+0

我試過了,但我結束了很多隨機數字,我不知道哪裏來自 – PeaceDealer

+0

@ user2674081。 。 。我懷疑在連接中有多個匹配導致重複的情況下你有不同的問題。你真的打算通過'group by'這兩個鍵來聚合嗎? –

+0

說實話,這個查詢是由不同的其他問題共同組成的,我在網站上發現了一些我需要的功能。甚至不確定那個小組是做什麼的。 – PeaceDealer