2015-06-17 148 views
0

我在同一個數據庫中有兩個表。將兩個表合併爲一個並刪除重複項

我想根據常見的id列合併它們。由於表格太大,我不確定是否有重複。

如何根據id將這兩個表合併爲一個並確保沒有重複項?

SELECT * 
FROM table1,table2 
JOIN 
GROUP BY id 
+0

它們是否具有相同的結構?如果是這樣,請使用'UNION'。 –

+1

@ PM77-1沒有人有4列和其他12 – angs

+1

那麼你究竟是什麼意思的「*合併*」?請提供一些示例數據和期望的結果。 –

回答

0

我不知道你到底要什麼,但無論如何,這是你的代碼

SELECT * 
FROM table1,table2 
JOIN 
GROUP BY id 

我只是編輯您查詢

SELECT * 
FROM table1 JOIN table2 
on table2.id = table1.id 
GROUP BY table1.id // here you have to add table 
//on which you will be group by at this moment this is table1 
0

通過合併兩個表,你是什麼意思?你想要來自一個表和列的記錄和列以及來自兩者的記錄嗎? 無論哪種方式,您只需要更改連接子句。

你可以做,如果你只從表1進行左想列要

SELECT DISTINCT * 
    FROM table1 tb1 
    JOIN table2 tb2 
    ON table1.id = table2.id 

現在就加入 如果你想列列的連接只從表2則右連接 如果你想來自兩個表的列都按原樣使用查詢。 如果存在具有相同數據的多個行,則DISTINCT可確保您只獲得一行(但是,不同的行將檢查行中所有列的值,無論它們是否不同或相同) 如果兩個表都有不同的列數。如果您不知道連接,則使用笛卡爾積

select distinct * 
    from table1 tb1, table2 tb2 
where tb1.id = tb2.id 

其中,id是表格之間通用的列。 在這裏,如果你想只從表1列做

select distinct tb1.* 

同樣由TB2在上面的語句代替TB1如果你只是想表2列。

select distinct tb2.* 

如果你想從兩者的cols只寫 '*'

在這兩種情況下,即如果你需要有選擇性的列只是寫一個表別名,那麼上面說的連接和產品就可以了。例如。 考慮: table1中有ID,FOO,酒吧欄目 表2有ID,名稱,卷沒有,年齡

你無論是在選擇查詢結果表 做到這一點只想要ID,FOO,名稱:

select distinct tb1.id, tb1.foo, tb2.name 
    from table1 tb1 
    join table2 tb2 
    on tb1.id=tb2.id 

同樣適用於笛卡爾產品查詢。 tb1,tb2都是BTW,稱爲表別名。

如果你想從兩個表中的數據,即使他們沒有任何共同之處只是做

select distinct * 
    from table1 , table2 

注意,這不能使用一個連接作爲連接需要公共列「開」攜手實現

+0

只是一兩件事,我不認爲你查詢 SELECT * FROM 表1,表2 JOIN GROUP BY ID 會工作。 GROUP BY使用聚合函數,例如計數,總和,最大值,最小值等。 通過emp_sal,emp_age從員工 組中選擇計數(emp_name),emp_sal,emp_age ; 這裏不適用。因此group by不能被使用。改用連接 – Proxima

相關問題