EXISTS 子查询导致错误 1064

Posted

技术标签:

【中文标题】EXISTS 子查询导致错误 1064【英文标题】:EXISTS subquery causes error 1064 【发布时间】:2016-02-14 21:38:17 【问题描述】:

自从我上次 PLESK 更新到 12.0.18 #70 以来,我在使用带有 EXISTS 子查询的 select 语句时遇到了 phpMyAdmin 的问题。

如果我仅以 MariaDB 网站上的示例为例(我使用数据库中的真实表和字段对其进行了测试):

SELECT col1 FROM t1 WHERE EXISTS (SELECT * FROM t2)

解释器迅速在“EXISTS”和“(SELECT”下划线以显示错误 1064

#1064 - You have an error in your SQL syntax;

1.  unknown keyword (near "EXISTS" at position 30)
2.  unexpected character (near "(" at position 37)

重要提示:Select 语句在我的 MariaDB (10.0.20) 服务器上使用 PHP 代码运行良好。只有 phpMyAdmin 告诉我有语法错误。

EXISTS 被贬低了吗?

谢谢!

[phpMyAdmin 4.5.0.2 和 MariaDB]

【问题讨论】:

请在此处发布您的真实查询。 澄清一下,您是说在您输入文本后立即出现错误 1064 - 在您使用“开始”按钮实际提交查询之前? 是的,艾萨克,你是对的!键入查询后立即出现错误。错误立即用红色下划线突出显示。所以我在这里发布真正的查询还是这个示例查询都没关系。 我无法重现该问题;您使用的是哪个 phpMyAdmin 版本?你可以在demo.phpmyadmin.net/master 上复制吗? @IsaacBennetch phpMyAdmin 是 4.5.0.2。我无法在演示中重现它。但我使用的是 MariaDB 10.0.22 !这是显示错误的图片:picload.org/image/piawgaw/exists.png 【参考方案1】:

这是 4.5.0(.x) 版本中一系列不幸的错误的一部分。当前最新版本为 4.5.2,该版本已修复此错误;我建议你upgrade。

【讨论】:

@Issac 是的,你是对的。今天我在 PLESK 上安装了一个更新,它安装了 phpMyAdmin 4.5.1。错误已修复。感谢您的提示!

以上是关于EXISTS 子查询导致错误 1064的主要内容,如果未能解决你的问题,请参考以下文章

错误:不使用EXISTS引入子查询时,选择列表中只能指定一个表达式

当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。 - 错误

Hive 中的错误:对于 Exists/Not Exists 运算符,子查询必须是相关的

当子查询没有引入 EXISTS 错误时,选择列表中只能指定一个表达式

我收到此错误:当未使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式

不使用EXISTS引入子查询时,选择列表中只能指定一个表达式--sql中的错误