返回最受欢迎的一天

时间:2019-02-14 22:34:16

标签: mysql phpmyadmin

我正在尝试编写一个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的新手,因此非常感谢您的帮助。谢谢。

2 个答案:

答案 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