我查看了相似的问题,并看到了几个相似的问题,答案不清楚,所以我想在这里问。
'''
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语句后出现错误,我知道这不是查询的最佳方法,但这是我分配作业的必要条件。
答案 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服务器追尾试图理解您,最终放弃了,而不是直接拒绝了它作为语法错误。