MySQL:联合查询在 MySQL 5.5 上失败,在 MySQL 5.1 上工作

发布于 2025-01-03 23:49:43 字数 1314 浏览 1 评论 0原文

我在处理顽固的 MySQL 查询时遇到了麻烦。这是一个相当长且复杂的查询,对此感到抱歉。我真的尽了最大努力自己找到它,但我可以在这里求助。

以下查询用于模拟 information_schema 中的列信息和名为 nexedit_schema 的表中的列信息的完全外连接。 PHP 变量 $db 包含包含后一个表的目标数据库。

该查询实际上在我自己的服务器(MySQL 版本 5.1)上成功运行,但在朋友的服务器(MySQL 版本 5.5)上运行失败。它声称我在“ON (schema_tables.db_table...”附近有一个语法错误,

我可能忽略了一些非常愚蠢的事情。任何好心人可以帮助我吗?

SELECT information_schema.tables.table_name, schema_tables.db_table, schema_tables.ne_page
  FROM information_schema.tables
  LEFT JOIN (
    (SELECT DISTINCT db_table, ne_page FROM {$db}.nexedit_schema)
    AS schema_tables)
  ON (schema_tables.db_table = information_schema.tables.table_name
    COLLATE utf8_unicode_ci)
  WHERE information_schema.tables.table_schema = '{$db}'
    AND information_schema.tables.table_name NOT LIKE 'nexedit_%'

UNION

SELECT information_schema.tables.table_name, schema_tables.db_table, schema_tables.ne_page
  FROM information_schema.tables
  RIGHT JOIN (
    (SELECT DISTINCT db_table, ne_page FROM {$db}.nexedit_schema)
    AS schema_tables)
  ON (schema_tables.db_table = information_schema.tables.table_name
    COLLATE utf8_unicode_ci)
  WHERE information_schema.tables.table_schema IS NULL
    AND schema_tables.db_table NOT LIKE 'nexedit_%'

GROUP BY information_schema.tables.table_name,schema_tables.db_table;

I'm having trouble with a stubborn MySQL query. It's a quite long and complex query, sorry about that. I really did my best to find it myself but I could use a hand here.

The following query is used to emulate a full outer join of column information in the information_schema, and column information in a table called nexedit_schema. The PHP variable $db contains the target database that contains the latter table.

The query actually successfully runs on my own server (MySQL version 5.1), but fails to run on a friend's server (MySQL version 5.5). It claims that I have a syntax error near "ON (schema_tables.db_table..."

I'm probably overlooking something really stupid. Anyone kind enough to help me out?

SELECT information_schema.tables.table_name, schema_tables.db_table, schema_tables.ne_page
  FROM information_schema.tables
  LEFT JOIN (
    (SELECT DISTINCT db_table, ne_page FROM {$db}.nexedit_schema)
    AS schema_tables)
  ON (schema_tables.db_table = information_schema.tables.table_name
    COLLATE utf8_unicode_ci)
  WHERE information_schema.tables.table_schema = '{$db}'
    AND information_schema.tables.table_name NOT LIKE 'nexedit_%'

UNION

SELECT information_schema.tables.table_name, schema_tables.db_table, schema_tables.ne_page
  FROM information_schema.tables
  RIGHT JOIN (
    (SELECT DISTINCT db_table, ne_page FROM {$db}.nexedit_schema)
    AS schema_tables)
  ON (schema_tables.db_table = information_schema.tables.table_name
    COLLATE utf8_unicode_ci)
  WHERE information_schema.tables.table_schema IS NULL
    AND schema_tables.db_table NOT LIKE 'nexedit_%'

GROUP BY information_schema.tables.table_name,schema_tables.db_table;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青朷 2025-01-10 23:49:43

这里有不必要的 )AS schema_tables) 应该在 AS 之前

There's unnecessary ) here: AS schema_tables) Should be before AS

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文