所以我试图在 MYSQL 中获取任何具有相同名称和相同数据类型的属性的表对。
SELECT distinct a.table_name,b.table_name FROM INFORMATION_SCHEMA.COLUMNS a
JOIN INFORMATION_SCHEMA.COLUMNS b on a.column_name=b.column_name
and a.data_type=b.data_type
WHERE a.table_schema='Online_food'
and b.table_schema='Online_food'
and a.table_name<>b.table_name
(Online_Food 是我的数据库)
问题是我得到两行
(客户,订单)
(订单,客户)
但我只想要其中之一。其中任何一个。
有什么建议吗???
最佳答案
如果你想排除一半的搜索,你可以这样做:
SELECT distinct a.table_name, b.table_name
FROM INFORMATION_SCHEMA.COLUMNS a
JOIN INFORMATION_SCHEMA.COLUMNS b ON a.column_name = b.column_name
AND a.data_type = b.data_type
WHERE a.table_schema = 'Online_food'
AND b.table_schema = 'Online_food'
AND STRCMP(a.table_name,b.table_name) > 0
通过选择一个表名在字母数字上比另一个表名大的结果,您可以确保只进行 0.5*n*n-n
比较,其中 n
是表的数量。
关于mysql - 重复超过 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042081/