您好,首先,我不是mysql查询的专家。我有wp_posts
和wp_wti_like_post
两个表,我LEFT JOIN
和wp_wti_like_post ON wp_posts.ID = wp_wti_like_post.post_id
SUM(wp_wti_like_post.value) < 2
,但no row
wp_wti_like_post
来自wp_posts
的ID为{1}}的{1}},它甚至不会显示来自wp_posts
的行,只是忽略它,请真正需要帮助。
查询:
SELECT *
FROM wp_posts
LEFT JOIN wp_wti_like_post ON wp_posts.ID = wp_wti_like_post.post_id
WHERE wp_posts.post_status = 'publish'
GROUP BY wp_wti_like_post.post_id
HAVING SUM( wp_wti_like_post.value ) <2
OR SUM( wp_wti_like_post.value ) = NULL
LIMIT 0 , 200
表wp_wti_like_post
表wp_posts
答案 0 :(得分:0)
您可能需要重新构建查询,如下所示:
SELECT * FROM
(
SELECT WP.*, SUM(LP.value) AS `value`
FROM wp_posts WP
LEFT JOIN
(SELECT post_id FROM wp_wti_like_post WHERE post_status = 'publish') LP
ON WP.ID = LP.post_id
GROUP BY WP.ID
) T1
WHERE T1.value IS NULL
OR T1.value < 2;
最内层查询首先只获取已发布的wti_like_posts。
然后执行左连接,这将为您提供从wp_posts获取所有行的预期结果,即使它们不与子查询中的记录连接也是如此。
执行该操作后,GROUP语句将执行SUMming值的计算。
最外层查询强制要求sum必须小于2或为null。
答案 1 :(得分:0)
所以我把自己整理出来并以这种方式运作
在
的地方SUM( wp_wti_like_post.value ) = NULL
它应该是
SUM( wp_wti_like_post.value ) IS NULL