首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MySQL5.7似乎忽略了子查询

为什么MySQL5.7似乎忽略了子查询
EN

Stack Overflow用户
提问于 2020-10-12 18:27:59
回答 1查看 28关注 0票数 0

我有以下MySQL查询,它在SQL8中的行为与我预期的一样,但在5.7版本中没有产生相同和正确的结果,我不知道原因是什么……

代码语言:javascript
复制
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' 
    );

该查询基本上是比较来自两个模式(ref_schema和new_schema)的两个表(别名和indiv)结构,并假定列出第二个模式中缺少的列……

假设两个模式中的表结构相同,它应该返回0row。它对MySQL8也是这样做的。但在5.7版本中,它返回完整的列集合。"NOT IN“条件似乎没有正确执行。

我使用MySQL8进行调试。5.7用于prod。所以我需要让它在5.7上运行。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-12 19:16:28

应用Akina fix给出了正确的答案,并解决了我的问题:

代码语言:javascript
复制
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' 
    );

现在,两个平台都提供了相同且准确的结果。语法甚至更容易阅读!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64316030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档