#2014-命令不同步;您现在不能运行此命令SQL子查询

时间:2019-10-06 16:27:05

标签: mysql sql subquery syntax-error

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

'''
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语句后出现错误,我知道这不是查询的最佳方法,但这是我分配作业的必要条件。

1 个答案:

答案 0 :(得分:0)

我相信引起您麻烦的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服务器追尾试图理解您,最终放弃了,而不是直接拒绝了它作为语法错误。