您好我正在编写一些需要if的东西才能从数据库中检索结果。
情况是如果interacterID不是NULL然后按它过滤,请参阅下面的
SELECT *
FROM status
WHERE type != "3"
AND userID = "'.$userID.'"
AND
(
interacterID IN ( #IF interacterID is null I want to skip this AND
SELECT userID
FROM userFriends
WHERE (
userFriends.userID = "'.$currentUserID.'"
OR userFriends.interacterID = "'.$currentUserID.'"
)
AND status = "1"
)
)
ORDER BY addedDate DESC
LIMIT 1
提前感谢您的帮助。
答案 0 :(得分:2)
如果我正确读到这个,我不确定你需要一个IF(which can be done)。一个简单的IS NULL和OR可以用于两种情况:
SELECT *
FROM status
WHERE type != "3"
AND userID = "'.$userID.'"
AND
(
interacterID IS NULL OR interacterID IN (
SELECT userID
FROM userFriends
WHERE (
userFriends.userID = "'.$currentUserID.'"
OR userFriends.interacterID = "'.$currentUserID.'"
)
AND status = "1"
)
)
ORDER BY addedDate DESC
LIMIT 1
答案 1 :(得分:1)
SELECT *
FROM status
WHERE type != "3"
AND userID = "'.$userID.'"
AND
(
interacterID IS NOT NULL (
SELECT userID
FROM userFriends
WHERE (
userFriends.userID = "'.$currentUserID.'"
OR userFriends.interacterID = "'.$currentUserID.'"
)
AND status = "1"
)
)
ORDER BY addedDate DESC
LIMIT 1
如果interacterID为null,则代码将不会执行