这是我的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
答案 0 :(得分:1)
您可以使用完全限定名称。它们通常具有以下语法:
DATABASE_NAME.TABLE_NAME.COLUMN_NAME
其中用.
分隔的每个标识符都是其名称空间的名称。当您发出当前命名空间中的查询时,可以省略命名空间的名称,就像您在desc tbl3
时所说的dbtest2
一样。
以下是在查询中执行此操作的方法:
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;