mysql 5.6中文本列上的mysql子选择不返回结果

mysql 5.6中文本列上的mysql子选择不返回结果,mysql,subquery,mysql-5.6,Mysql,Subquery,Mysql 5.6,我有一个如下的审计查询,用于审计MySQL中用户的表级权限: SELECT -- the list of privileges for tables mt.host `host`, mt.user `user`, CONCAT(mt.Db, '.', mt.Table_name) `Tables`, REPLACE(mt.Table_priv, ',', ', ') AS `Privileges` FROM mysql.tables_priv mt WHERE mt.Table_name IN

我有一个如下的审计查询,用于审计MySQL中用户的表级权限:

SELECT -- the list of privileges for tables
mt.host `host`,
mt.user `user`,
CONCAT(mt.Db, '.', mt.Table_name) `Tables`,
REPLACE(mt.Table_priv, ',', ', ') AS `Privileges`
FROM
mysql.tables_priv mt
WHERE
mt.Table_name IN
(SELECT
DISTINCT
t.table_name `tables`
FROM
information_schema.tables AS t
WHERE
t.table_type IN
('BASE TABLE', 'SYSTEM VIEW', 'TEMPORARY', '') OR
t.table_type <> 'VIEW' AND
t.create_options IS NOT NULL
)

在我从MySQL 5.5升级到MySQL 5.6之前,这个查询一直运行良好。现在它不起作用了。MySQL 5.6中文本列上的子选择是否存在某种问题?

看起来这可能是您的问题: 使用底部的变通方法,我能够让它工作

set optimizer_switch='semijoin=off';

谢谢你这么快就找到了!我后来意识到,变通可能并不总是在bug报告的底部。。。