我有一個表,我想合併具有相同名稱的兩個行的數據,這樣的:修改表合併2行有相同價值
id | name | price | priced
1 | Samsung | 100 | 0
2 | Samsung | 0 | 500
我想最後輸入是:
id | name | price | priced
(doesn't matter) | Samsung | 100 | 500
我有一個表,我想合併具有相同名稱的兩個行的數據,這樣的:修改表合併2行有相同價值
id | name | price | priced
1 | Samsung | 100 | 0
2 | Samsung | 0 | 500
我想最後輸入是:
id | name | price | priced
(doesn't matter) | Samsung | 100 | 500
試試這個:
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
我需要合併表中的列,而不是獲取它們 –
您需要獲取它們,然後將它們插入某處(同一個表或不同的表)。 @RagingBull正在爲你解決問題的重要部分。 – Kryten
沒有辦法改變表格嗎? –
你想嗎?
select id , name,
sum(price) as price, sum(priced) as priced from table1
group by name
您需要使用最大或最小ID來達到這個目的。我知道MySQL會讓你做這個小組,但它是不合邏輯的,並且傾向於給出錯誤的結果。 **注意所有MYSQL DEVS **停止以這種方式執行「GROUP BY」! – Zane
我知道你想添加價格沒有得到最大。我想你應該做一個新表「表2」和行添加到它的方式如下:
INSERT INTO table2 Values (
SELECT
name,
SUM(price),
SUM(priced)
FROM table1
GROUP BY name)
然後刪除表1。這樣你將添加表1中的同名行。
你可以通過* merge *來定義你的意思嗎? –
你想添加兩列嗎?你也想要替換當前表或只是選擇查詢? –
替換當前表 –