我在同一个数据库中有 2 个表。
我想根据公共id
列合并它们。因为表格太大,我不确定是否有重复。
如何根据 将这两个表合并为一个id
并确保没有重复?
SELECT *
FROM table1,table2
JOIN
GROUP BY id
合并两个表是什么意思?您想要两个表中的记录和列,还是一个表中的列和两个表中的记录?无论哪种方式,您都只需要更改连接子句。
您可以在您希望的列上进行连接
SELECT DISTINCT *
FROM table1 tb1
JOIN table2 tb2
ON table1.id = table2.id
现在,如果您只想要 table1 中的列,请执行 LEFT JOIN 如果您只想要 table2 中的列,那么 RIGHT JOIN 如果您想要两个表中的列,请按原样使用查询。DISTINCT 确保如果有多行具有相同的数据,您只获得单行(但此 distinct 将检查一行中所有列的值是否不同或相同)如果两个表的编号不同,联合将无济于事的列。如果您不了解联接,请使用笛卡尔积
select distinct *
from table1 tb1, table2 tb2
where tb1.id = tb2.id
其中 id 是表之间共有的列。在这里,如果您只想要 table1 中的列
select distinct tb1.*
同样,如果您只需要 table2 列,则在上述语句中将 tb1 替换为 tb2。
select distinct tb2.*
如果你想要两者的cols,只需写'*'
在任何一种情况下,即上面所说的连接和产品,如果您需要选择性列,只需编写一个表别名。例如考虑:table1 有 id、foo、bar 作为列 table2 有 id、name、roll no、age
您只需要选择查询结果中两个表的 id、foo、name 执行以下操作:
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
请注意,这不能使用连接来实现,因为连接需要一个公共列来连接“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