繁体   English   中英

如果左连接表中的子行不存在,则忽略该行的Mysql查询

[英]Mysql query ignoring the row if child row from left join table doesn't exists

嗨,首先,我不是mysql查询专家。 我有两个表wp_postswp_wti_like_post ,我正在wp_wti_like_post进行LEFT JOIN wp_wti_like_post ON wp_posts.ID = wp_wti_like_post.post_idSUM(wp_wti_like_post.value) < 2但是如果wp_wti_like_post no row来自wp_posts id为post的no row那么它就没有了甚至不显示来自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

http://prntscr.com/6xixrd

表wp_posts

http://prntscr.com/6xixzp

您可能需要将查询重组为如下所示:

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。

所以我把自己整理出来并以这种方式运作

在...的地方

SUM( wp_wti_like_post.value ) = NULL 

它应该是

SUM( wp_wti_like_post.value ) IS NULL 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM