Mysql案例多次返回NULL
我正在做一个案例,以获得用户的朋友。有一个系统,其中is_confirm=1表示朋友,is_confirm=0表示仍挂起,但请求已发送。我需要得到所有确认为1的朋友。如果没有朋友,或者如果案例为0且存在挂起的请求,则查询将按照我的要求返回NULL。它返回多个空值Mysql案例多次返回NULL,mysql,Mysql,我正在做一个案例,以获得用户的朋友。有一个系统,其中is_confirm=1表示朋友,is_confirm=0表示仍挂起,但请求已发送。我需要得到所有确认为1的朋友。如果没有朋友,或者如果案例为0且存在挂起的请求,则查询将按照我的要求返回NULL。它返回多个空值 SELECT CASE WHEN friend_user_id = '935' AND is_confirmed = '1' THEN initiator_user_id
SELECT CASE WHEN friend_user_id = '935'
AND is_confirmed = '1'
THEN initiator_user_id
WHEN initiator_user_id = '935'
AND is_confirmed = '1'
THEN friend_user_id
ELSE NULL
END AS friend_id
FROM wp_bp_friends
LIMIT 0 , 30
在这里使用CASE也是最好的方法吗
SQL FIDDLE我认为案例并不是最好的方法。另一种方法可以是:
(
/* 1) */
SELECT wp_bp_friends.initiator_user_id AS FriendId
FROM wp_bp_friends
WHERE
wp_bp_friends.friend_user_id = 935
AND wp_bp_friends.is_confirmed = '1'
)
UNION
(
/* 2) */
SELECT wp_bp_friends.friend_user_id AS FriendId
FROM wp_bp_friends
WHERE
wp_bp_friends.initiator_user_id = 935
AND wp_bp_friends.is_confirmed = '1'
)
它将连接的Id为1)935名发起人的确认朋友
2)用户935作为发起人的935的确认好友使用两个查询:
(
SELECT friend_user_id FROM wp_bp_friends
WHERE initiator_user_id='935' AND is_confirmed='1'
) UNION ALL (
SELECT initiator_user_id FROM wp_bp_friends
WHERE friend_user_id='935' AND is_confirmed='1'
)
1的文本是否真的需要勾号,或者你能去掉它们吗?我认为样本数据、期望的结果和实际的结果将真正有助于传达你的问题。当然,SQLFiddle是一个非常有用的资源。我将制作一个SQLFIDLE:)1或0只是我使用的数字,1表示已确认,0表示待处理。我的理解是,为什么它不应该返回多个
NULL
s?由于没有WHERE
子句,因此它会为表中的每一行返回一行结果。由于大多数行在条件下既不匹配也不匹配,因此将有大量空值。
SELECT initiator_user_id FROM wp_bp_friends
WHERE friend_user_id='935' AND is_confirmed='1'
(
SELECT friend_user_id FROM wp_bp_friends
WHERE initiator_user_id='935' AND is_confirmed='1'
) UNION ALL (
SELECT initiator_user_id FROM wp_bp_friends
WHERE friend_user_id='935' AND is_confirmed='1'
)