SQL - 如果子查询中的列之一 return NULL,如何删除整行

SQL - how to remove whole row if one of the column in subquery return NULL

我卡在了 1 个 SQL 查询中

SELECT u.*,

um2.meta_value as parent_user_id,
( select u.user_email FROM wp_users u WHERE u.ID = um2.meta_value ) AS parent_user_email

FROM

wp_users u 

JOIN wp_usermeta um2 ON u.ID = um2.user_id
AND um2.meta_key = 'parent_user_id'

GROUP BY
u.ID

本次查询return4行(如截图所示)

我想要这样的场景:如果子查询 return NULL ,则不会显示整行。 所以在这个例子中 "childthree" 不应该显示,因为 "parent_user_email" 是 NULL ,所以整个第三行需要移除

改用join

SELECT u.*, um2.meta_value as parent_user_id,
       u2.user_email as parent_user_email
FROM wp_users u JOIN
     wp_usermeta um2
     ON u.ID = um2.user_id AND
        um2.meta_key = 'parent_user_id' JOIN
     wp_users u2
     ON u2.ID = um2.meta_value
GROUP BY u.ID;

注意:这假设电子邮件值本身永远不会是 NULL。如果可能,请添加 WHERE u2.user_email IS NOT NULL.

此外,您的查询应该会失败,因为 GROUP BY 列与 SELECT 不一致。但是,从逻辑上讲似乎没问题,因为每个 user 只有一个家长和用户电子邮件。但是,我会将这些列包含在 GROUP BY.