我正在尝试编写一个MySQL查询,该查询返回一周中最受欢迎的一天进行预订。
我不确定我的问题在这里。 MySQL返回一个错误,指出存在语法错误,但是由于查询的复杂性(无论如何对我来说),我无法找到原因。
错误显示:
“#1064-您的SQL语法有误;请查看手册 对应于您的MariaDB服务器版本,以使用正确的语法 在“ tbl_booking” GROUP BY DATE_FORMAT(“ tbl_booking.booking_date”附近, '%W')ORDER BY'在第2行“
SELECT DATE_FORMAT('tbl_booking.booking_date', '%W'), COUNT(DATE_FORMAT('tbl_booking.booking_date', '%W')) AS 'mostpopularday'
FROM 'tbl_booking'
GROUP BY DATE_FORMAT('tbl_booking.booking_date', '%W')
ORDER BY 'mostpopularday' DESC
LIMIT 1
我以前使用过DATE_FORMAT()函数,但从未将其用于数据排序。我是MySQL / PhpMyAdmin的新手,因此非常感谢您的帮助。谢谢。
答案 0 :(得分:1)
您的查询看起来还可以,但是您有语法错误。列名和表名不应该使用'
。在mysql中,您可以使用 `
引用表名和列名
SELECT
DATE_FORMAT(tbl_booking.booking_date, '%W'),
COUNT(DATE_FORMAT(tbl_booking.booking_date, '%W')) AS mostpopularday
FROM tbl_booking
GROUP BY DATE_FORMAT(tbl_booking.booking_date, '%W')
ORDER BY mostpopularday DESC
LIMIT 1
答案 1 :(得分:1)
您在表和列名周围的'
分隔符不正确。
为获得最佳结果,完全摆脱分隔符,像这样。
SELECT DATE_FORMAT(tbl_booking.booking_date, '%W'),
COUNT(DATE_FORMAT(tbl_booking.booking_date, '%W')) AS mostpopularday
FROM tbl_booking
GROUP BY DATE_FORMAT(tbl_booking.booking_date, '%W')
ORDER BY mostpopularday DESC
LIMIT 1
如果必须保留它们,它们应该看起来像这样。注意反引号:`
。
SELECT DATE_FORMAT(`tbl_booking`.`booking_date`, '%W'),
COUNT(DATE_FORMAT(`tbl_booking`.`booking_date`, '%W')) AS mostpopularday
FROM `tbl_booking`
GROUP BY DATE_FORMAT(`tbl_booking`.`booking_date`, '%W')
ORDER BY mostpopularday DESC
LIMIT 1