2014-04-01 40 views
0

我有一個表,我想合併具有相同名稱的兩個行的數據,這樣的:修改表合併2行有相同價值

id | name | price | priced 

1 | Samsung | 100 | 0 

2 | Samsung | 0  | 500 

我想最後輸入是:

id    | name | price | priced 

(doesn't matter) | Samsung | 100 | 500 
+0

你可以通過* merge *來定義你的意思嗎? –

+0

你想添加兩列嗎?你也想要替換當前表或只是選擇查詢? –

+0

替換當前表 –

回答

2

試試這個:

SELECT MAX(id) as id, name,MAX(price) as price, MAX(priced) as priced 
FROM TableName 
GROUP BY name 

要插入表:

INSERT INTO Table2 VALUES 
(SELECT MAX(id) as id, name,MAX(price) as price, MAX(priced) as priced 
FROM TableName 
GROUP BY name) 

編輯

正如你所說,合併(插入新和刪除等)

INSERT INTO TableName VALUES 
(SELECT MAX(id)+1 as id, name,MAX(price) as price, MAX(priced) as priced 
FROM TableName 
GROUP BY name) 

--Now deleting others 
DELETE T1 FROM TableName T1, TableName T2 WHERE T1.id < T2.id AND T1.name = T2.name 
+0

我需要合併表中的列,而不是獲取它們 –

+0

您需要獲取它們,然後將它們插入某處(同一個表或不同的表)。 @RagingBull正在爲你解決問題的重要部分。 – Kryten

+0

沒有辦法改變表格嗎? –

1

你想嗎?

select id , name, 
sum(price) as price, sum(priced) as priced from table1 
group by name 
+1

您需要使用最大或最小ID來達到這個目的。我知道MySQL會讓你做這個小組,但它是不合邏輯的,並且傾向於給出錯誤的結果。 **注意所有MYSQL DEVS **停止以這種方式執行「GROUP BY」! – Zane

0

我知道你想添加價格沒有得到最大。我想你應該做一個新表「表2」和行添加到它的方式如下:

INSERT INTO table2 Values (
SELECT 
    name, 
    SUM(price), 
    SUM(priced) 
FROM table1 
GROUP BY name) 

然後刪除表1。這樣你將添加表1中的同名行。