我正在尝试编写自定义SQL查询,并且只能使其中的一部分工作。
我需要选择浏览量最多的前10个帖子。 (见下面的代码)
SELECT p.*, pm1.meta_value + 0 AS viewcount
FROM wp_posts p
LEFT JOIN wp_postmeta pm1 ON pm1.post_id = p.ID
WHERE pm1.meta_key = 'pvc_views' AND p.post_status IN ('publish') AND p.post_type='post' AND p.post_password =''
ORDER BY viewcount
DESC LIMIT 0, 10
上面的代码确实有效,但我还需要在查询中添加一些内容,同时返回图像附件元数据。我尝试了下面的代码,其中包含inner join
,但我收到错误:Unknown column 'ID' in 'where clause'
SELECT p.*, pm1.meta_value + 0 AS viewcount
FROM wp_posts p
INNER JOIN (SELECT * FROM wp_postmeta WHERE post_id = ID AND meta_key = '_wp_attachment_metadata') pm2
LEFT JOIN wp_postmeta pm1 ON pm1.post_id = p.ID
WHERE pm1.meta_key = 'pvc_views' AND p.post_status IN ('publish') AND p.post_type='post' AND p.post_password =''
ORDER BY viewcount
DESC LIMIT 0, 10
有人可以帮忙吗?
答案 0 :(得分:1)
你需要在内部查询中提供wp_posts表的别名,你也可以重写你的查询,如下所示
SELECT
p.*,
pm1.meta_value + 0 AS viewcount ,
pm2.meta_value AS image
FROM wp_posts p
INNER JOIN
wp_postmeta pm2
ON (pm2.post_id = p.ID AND pm2.meta_key = '_wp_attachment_metadata')
LEFT JOIN wp_postmeta pm1 ON pm1.post_id = p.ID
WHERE
pm1.meta_key = 'pvc_views'
AND p.post_status IN ('publish')
AND p.post_type='post'
AND p.post_password =''
ORDER BY viewcount
DESC LIMIT 0, 10