gpt4 book ai didi

mysql - SQL显示两个表的差异并将结果与​​具有不同数据库的另一个表进行比较

转载 作者:行者123 更新时间:2023-11-28 23:50:58 24 4
gpt4 key购买 nike

这是我的 dbtest1 结构

数据库名称:dbtest1

tbl1

id | name  | age
1 | johny | 26
2 | jane | 25
3 | mike | 32
4 | jean | 33

tbl2

id | name | age
1 | john | 26
2 | jane | 25
3 | mike | 42

使用下面的查询来获取两个表的差异。

SELECT *
FROM (
SELECT *, 'tableT1' AS fromTable FROM tbl1
UNION ALL
SELECT *, 'tableT2' AS fromTable FROM tbl2
) tbl
GROUP BY id, name, age
HAVING count(*) = 1
ORDER BY id;

我得到了这个结果。

id | name | age | fromTable
1 | john | 26 | tableT1
3 | mike | 42 | tableT2
4 | jean | 33 | tableT1

现在我的问题是如何将上面的结果与 dbtest2 进行比较?我不知道如何实现它..在此先感谢。


数据库名称:dbtest2

tbl3

id | name | age
1 | john | 26
2 | jane | 25
3 | mike | 42

最佳答案

您可以使用完全限定的名称。它们通常具有以下语法:

DATABASE_NAME.TABLE_NAME.COLUMN_NAME

其中每个用 . 分隔的标识符是它们的命名空间的名称。当您发出当前命名空间中的查询时,您可以省略命名空间的名称,就像您在 dbtest2 中说 desc tbl3 一样。

以下是您在查询中的做法:

 SELECT *
FROM (
SELECT *, 'tableT1' AS fromTable FROM tbl1
UNION ALL
SELECT *, 'tableT2' AS fromTable FROM tbl2
UNION ALL
SELECT *, 'tableT3' AS fromTable FROM dbtest2.tbl3 # Here use fully qualified table name
) tbl
GROUP BY id, name, age
HAVING count(*) = 1
ORDER BY id;

关于mysql - SQL显示两个表的差异并将结果与​​具有不同数据库的另一个表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625126/

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