2015-02-05 66 views
0

我不知道如何來明確這個稱號。更新與使用不同行的一個查詢多行的價值

使用shared_id我得到以下數據本身加入了表之後。

a.id | a.shared_id | a.key  | a.value   | b.id | b.shared_id | b.key  | b.value 
198131 | 6044  | unique-id | E15SJOEMGRMH013 | 198281 |6044   | _unique_id | 

這是從結果:

我需要的是,將設置b.value到a.values value.So在這1行的例子,我想b.value的更新語句爲E15SJOEMGRMH013

現在還記得a.id和b.id不如鍵被稱爲東西略有不同,但它們應該持有相同的值相同。有幾百行,所以我想在一個更新查詢中做到這一點。

+1

請出示你嘗試過什麼。你基本上把你的加入,更換'選擇 FROM B'與UPDATE'',並添加'SET b.value = a.value'底。 – Barmar 2015-02-05 19:24:27

+0

@Barmar查詢添加。即時通訊不知道如何使它成爲一個更新聲明,因爲多行具有不同的ID和相同的shared_id。 – Shawn 2015-02-05 19:29:09

回答

2

你不需要的子查詢,以及你對他們的使用可能是爲什麼你不能找出相應UPDATE查詢。

UPDATE table1 AS a 
JOIN table1 AS b ON a.shared_id = b.shared_id 
SET b.value = a.value 
WHERE a.key = 'unique-id' AND b.key = '_unique_id' 
    AND a.value != '' 

SELECT應該是簡單的:

SELECT * 
FROM table1 AS a 
JOIN table1 AS b ON a.shared_id = b.shared_id AND a.value != b.value 
WHERE a.key = 'unique-id' AND b.key = '_unique_id' 
    AND a.value != '' 

你不需要a.value != b.value子句中的UPDATE - 如果它們是相同的,則UPDATE沒有做任何事情。

+0

哇是的,這是更容易,然後我建立它的方式我現在看到我的邏輯錯誤。謝謝! – Shawn 2015-02-05 19:37:48