【问题标题】:#2014 - Commands out of sync; you can't run this command now SQL Subquery#2014 - 命令不同步;您现在无法运行此命令 SQL 子查询
【发布时间】:2019-10-06 16:27:05
【问题描述】:

我查看了类似的问题,看到几个类似的问题,答案不清楚,所以想在这里问。

'''
USE country_club;


SELECT fac.name,
       concat(mem.firstname, ' ', mem.surname) AS fullname,
       starttime =
  (SELECT starttime
   FROM Bookings
   WHERE starttime LIKE '2012-09-14%'),
       (slots * 30) AS mincost,
       CASE
           WHEN boo.memid=0 THEN boo.slots*fac.guestcost
           ELSE boo.slots*fac.membercost
       END AS cost
FROM Bookings AS boo
LEFT JOIN Members AS mem ON boo.memid = mem.memid
LEFT JOIN Facilities AS fac ON boo.facid = fac.facid
HAVING cost > 30;
'''

在我添加第二个 SELECT 语句后出现错误,我知道这不是最好的查询方式,但这是我分配的要求。

【问题讨论】:

  • 该网站是 sql.springboard.com,我知道它是 phpMyAdmin 4.0.10deb1。如果需要,我可以运行 SQL 命令来了解更多信息。
  • 如何运行此查询?在phpmyadmin中?或者你有例如运行这个的 php 页面?您收到的错误通常意味着您在前一个查询尚未完成时发送了一个新查询(例如,包括您必须获取前一个选择的完整结果集,即使您可能不需要它)。如果您使用 phpmyadmin 或 mysql 客户端,他们通常会为您执行此操作(可能除了错误,phpmyadmin 有一些),但如果您有自己的脚本/应用程序/...,这可能是问题所在,所以您可能需要添加一些有关它的详细信息。
  • 我在 phpmyadmin 中运行查询。我不使用脚本。是否有存储查询数据的解决方法?
  • 考虑就这个错误联系跳板,因为这看起来像是一个 PHPmyAdmin 可能的设置相关错误。或多或少与Buffered and Unbuffered queries 相关,这可能导致#2014 - Commands out of sync; you can't run this command now SQL Subquery 错误..

标签: mysql sql subquery syntax-error


【解决方案1】:

我相信引起你麻烦的SQL子句是这个。 (如果这不是真的,请编辑您的问题以澄清它。)

 WHERE ...
 starttime =
  (SELECT starttime
    FROM Bookings
    WHERE starttime LIKE '2012-09-14%'),

这是一个奇怪的操作。看起来您想要特定日期的所有 starttime 值。那么为什么不在你的查询中这么说呢?你需要的是这样的东西。

 WHERE ...
        starttime  >= '2012-09-14 00:00:00'
   AND  starttime < '2012-09-14 00:00:00' + INTERVAL 1 DAY

我相信您遇到了奇怪的诊断“命令不同步”错误,因为您的查询显示

   SELECT WHERE .... value = (whole mess of values)

你的 MySQL 服务器追着它的尾巴试图理解你,最终放弃了,而不是直接拒绝它作为语法错误。

【讨论】:

  • 使用国家俱乐部; SELECT WHERE fac.name, concat(mem.firstname, ' ', mem.surname) as fullname, starttime = (SELECT starttime FROM Bookings WHERE starttime LIKE '2012-09-14%'), (slots * 30) as mincost,
  • 我用上面的方法更新了查询,遇到了一个错误。 #1064 - 你的 SQL 语法有错误
  • 您评论中的文本甚至与有效的 SQL 都不接近。您可能需要对其进行返工。
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 2019-07-04
  • 2012-12-01
  • 1970-01-01
  • 2011-06-10
相关资源
最近更新 更多