为什么 MySQL5.7 好像忽略了子查询
Why MySQL5.7 seems to ignore subquery
我有以下 SQL 查询,它在 MySQL 8 中的行为与我预期的一样,但在 5.7 版中不会产生相同且正确的结果,我不明白为什么。 ..
SELECT concat(table_name, '_', column_name) as missing
from information_schema.columns
where table_schema = 'ref_schema' and table_name in ('aliases','indiv') and
concat(table_name, '_', column_name) not in (
select concat( columns.table_name,'_',columns.column_name) as v
from information_schema.columns
where table_schema = 'new_schema'
);
查询基本上是比较来自 2 个模式(ref_schema 和 new_schema)的 2 个 table(别名和独立)结构,并且应该列出第二个模式中缺失的列一个...
假设 table 结构在两个模式中是相同的,它应该 return 0 行。它与 MySQL8 一起使用。但在 5.7 版中,它 return 是完整的列集。似乎“NOT IN”条件没有正确执行。
我正在使用 MySQL8 进行调试。 5.7 用于产品。所以我需要在 5.7 上安装它 运行。
如有任何帮助,我们将不胜感激。
应用 Akina 修复给出了正确的答案并解决了我的问题:
SELECT concat(table_name, '_', column_name) as missing
FROM information_schema.columns
WHERE
table_schema = 'ref_schema' and
table_name in ('aliases','indiv') and
(table_name,column_name) not in (
select table_name,column_name
from information_schema.columns
where table_schema = 'new_schema'
);
现在两个平台都提供相同且准确的结果。语法更易读!
我有以下 SQL 查询,它在 MySQL 8 中的行为与我预期的一样,但在 5.7 版中不会产生相同且正确的结果,我不明白为什么。 ..
SELECT concat(table_name, '_', column_name) as missing
from information_schema.columns
where table_schema = 'ref_schema' and table_name in ('aliases','indiv') and
concat(table_name, '_', column_name) not in (
select concat( columns.table_name,'_',columns.column_name) as v
from information_schema.columns
where table_schema = 'new_schema'
);
查询基本上是比较来自 2 个模式(ref_schema 和 new_schema)的 2 个 table(别名和独立)结构,并且应该列出第二个模式中缺失的列一个...
假设 table 结构在两个模式中是相同的,它应该 return 0 行。它与 MySQL8 一起使用。但在 5.7 版中,它 return 是完整的列集。似乎“NOT IN”条件没有正确执行。
我正在使用 MySQL8 进行调试。 5.7 用于产品。所以我需要在 5.7 上安装它 运行。
如有任何帮助,我们将不胜感激。
应用 Akina 修复给出了正确的答案并解决了我的问题:
SELECT concat(table_name, '_', column_name) as missing
FROM information_schema.columns
WHERE
table_schema = 'ref_schema' and
table_name in ('aliases','indiv') and
(table_name,column_name) not in (
select table_name,column_name
from information_schema.columns
where table_schema = 'new_schema'
);
现在两个平台都提供相同且准确的结果。语法更易读!