gpt4 book ai didi

mysql - 查询 db1 中且 IS NOT 于 db2 中的 INFORMATION_SCHEMA 字段

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

我不知道是否应该在此处或“数据库管理员”中发布此问题。

我有2个mysql数据库db1和db2。他们有一些不同的表,比如说,db1 有 tbl_home 而 db2 没有。两者都有 tbl_city 但字段不同。

所以,我想知道 db1 有哪些表和字段 db2 没有。

我有这个查询:

SELECT CONCAT (TABLE_NAME,COLUMN_NAME) FROM COLUMNS WHERE CONCAT (TABLE_NAME,COLUMN_NAME) NOT IN
(SELECT CONCAT (TABLE_NAME,COLUMN_NAME) FROM COLUMNS WHERE TABLE_SCHEMA ='db2')
AND TABLE_SCHEMA ='db1'

这个想法是从 db1 创建一个串联的搅拌(表名+字段名),然后与 db2 的相同列表进行比较。它应该显示 db1 中不在 db2 中的每一行。由于某种原因,我没有错误,但它没有显示正确的结果。我错过了什么?

最佳答案

您可以使用左连接:

SELECT db1.table_name, db1.column_name 
FROM
information_schema.columns db1
LEFT JOIN
information_schema.columns db2
ON
db1.table_schema='db1' AND db2.table_schema='db2'
AND db1.table_name = db2.table_name
WHERE
db2.table_schema IS NULL
ORDER BY
db1.table_name

如果你想要一个逗号分隔的列表,你可以使用GROUP_CONCAT:

SELECT db1.table_name, GROUP_CONCAT(db1.column_name)
FROM ... same as above ...
WHERE
db2.table_schema IS NULL
GROUP BY
db1.table_name
ORDER BY
db1.table_name

关于mysql - 查询 db1 中且 IS NOT 于 db2 中的 INFORMATION_SCHEMA 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382876/

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