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