gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:09:47 24 4
gpt4 key购买 nike

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

我想根据公共(public) 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 确保在多行具有相同数据的情况下仅获得一行(但此不同将检查一行中所有列的值,无论它们是不同还是相同)如果两个表的列数不同,联合将无济于事。如果您不了解联接,请使用笛卡尔积

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

其中 id 是表之间公共(public)的列。如果您只需要 table1 中的列,请执行以下操作

select distinct tb1.* 

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

select distinct tb2.*

如果您想要两者的列,只需写“*”

无论哪种情况,即上面提到的连接和产品,如果您需要选择性列,只需编写一个表别名即可。例如。考虑 :table1 有 id、foo、bar 作为列表2有id,姓名,卷号,年龄

您只需要 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 被称为表别名。

如果您想要两个表中的数据,即使它们没有任何共同点,也可以这样做

select distinct * 
from table1 , table2

请注意,使用联接无法实现这一点,因为联接需要公共(public)列来联接“on”

关于mysql - 将两个表合并为一个并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com