我看过类似的问题,看到几个类似的问题,答案不明确,所以我想我会在这里问。
'''
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的子句导致你的麻烦是这样的。(如果这不是真的,请编辑您的问题以澄清它。
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服务器追逐它的尾巴试图理解你,最终放弃了,而不是立即拒绝它作为语法错误。