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
.
中
我卡在了 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
.