此查询有什么问题?:
SELECT
'posts'.'post_id' AS 'id',
'posts'.'post_title' AS 'title',
LEFT('posts','post_body', 512) AS 'preview',
'posts'.'post_user' AS 'user',
DATE_FORMAT('posts'.'post_date', '%d/%m/%Y %H:%i:%s') AS 'DATE',
'comments'.'total_comments',
DATE_FORMAT('comments'.'last_comment', '%d/%m/%Y %H:%i:%s') AS 'last_comment'
FROM 'posts'
LEFT JOIN (
SELECT
'post_id',
COUNT('comment_id') AS 'total_comments',
MAX('comment_date') AS 'last_comment'
FROM 'comments'
GROUP BY 'post_id'
) AS 'comments'
ON 'posts'.'post_id' = 'comments'.'post_id'
ORDER BY 'posts'.'post_date' DESC
我明白了:
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'.'post_id'AS'id','posts'附近使用正确的语法.'post_title'AS'title',LEFT('posts','p'at line 2
答案 0 :(得分:4)
您正在使用字符串文字作为表格:
FROM 'posts'
如果您想要转义表名,请使用反引号,例如:
FROM `posts`
不需要转义表名; from posts
完全没问题。
答案 1 :(得分:1)
不要使用普通撇号(“'”),而是在MYSQL中反复使用“`”。普通撇号用于引用字符串。还请注意我在
中更改了逗号LEFT(`posts`,`post_body`, 512) as `preview`
到一段时间。
应该是:
SELECT
`posts`.`post_id` AS `id`,
`posts`.`post_title` AS `title`,
LEFT(`posts`.`post_body`, 512) AS `preview`,
`posts`.`post_user` AS `user`,
DATE_FORMAT(`posts`.`post_date`, '%d/%m/%Y %H:%i:%s') AS `DATE`,
`comments`.`total_comments`,
DATE_FORMAT(`comments`.`last_comment`, '%d/%m/%Y %H:%i:%s') AS `last_comment`
FROM `posts`
LEFT JOIN (
SELECT
`post_id`,
COUNT(`comment_id`) AS `total_comments`,
MAX(`comment_date`) AS `last_comment`
FROM `comments`
GROUP BY `post_id`
) AS `comments`
ON `posts`.`post_id` = `comments`.`post_id`
ORDER BY `posts`.`post_date` DESC
答案 2 :(得分:1)
我认为您的LEFT语法错误,将第一个逗号更改为句号
LEFT('posts','post_body', 512) AS 'preview',
应该是
LEFT('posts'.'post_body', 512) AS 'preview',