将两个表合并为一个表并删除重复项

Merge two tables to one and remove duplicates

我在同一个数据库中有 2 个表。

我想根据公共 id 列合并它们。由于表格太大我不确定是否有重复。

如何根据 id 将这两个表合并为一个表并确保没有重复?

SELECT *
FROM table1,table2
JOIN
GROUP BY id

试试联合: https://dev.mysql.com/doc/refman/5.0/en/union.html

这很简单。希望它会有所帮助。

你也应该看看"DISTINCT"。

合并两个 table 是什么意思?您想要来自两个 table 的记录和列还是来自一个的列和来自两个的记录? 无论哪种方式,您都只需要更改连接子句。

您可以对您希望的列进行联接

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

现在,如果您只需要 table1 中的列,请执行 LEFT JOIN 如果您只想要 table2 中的列,那么 RIGHT JOIN 如果您想要来自两个 table 的列,请按原样使用查询。 如果有多行具有相同的数据,DISTINCT 确保您只得到一行(但是这个 distinct 将检查一行中所有列的值,无论它们是不同的还是相同的) 如果两个 table 的列数不同,联合将无济于事。如果您不知道联接,请使用笛卡尔积

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

其中 id 是 table 之间共有的列。 在这里,如果您只需要 table1 中的列,请执行

select distinct tb1.* 

如果您只需要 table2 列,则同样将上述语句中的 tb1 替换为 tb2。

select distinct tb2.*

如果你想要两者的 cols 只需写'*'

在任何一种情况下,即如果您需要 selective 列,则上面所说的连接和产品只需写一个 table 别名。例如。 考虑 : table1 有 id、foo、bar 作为列 table2 有身份证、姓名、卷号、年龄

您只需要 select 查询结果中 table 的 id, foo, name 这样做:

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

笛卡尔乘积查询也是如此。 tb1、tb2 顺便说一句,被称为 table 别名。

如果您想要来自两个 table 的数据,即使它们没有任何共同点,也只需执行

select distinct * 
  from table1 , table2

请注意,这不能使用联接来实现,因为联接需要一个公共列才能联接'on'

我不确定你到底想要什么,但无论如何,这是你的代码

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