Mysql 如何在select in功能中选择多于3个表外接程序

Mysql 如何在select in功能中选择多于3个表外接程序,mysql,Mysql,我无法获得最新的数据 我如何得到这样的查询 SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, U.l_name FROM posts M, person U WHERE M.uid_fk=U.p_id AND M.uid_fk in ( (select send_id from friend_request where p_id = '7' AND s

我无法获得最新的数据

我如何得到这样的查询

SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, U.l_name
 FROM posts M, person U
 WHERE M.uid_fk=U.p_id
    AND M.uid_fk in (
      (select send_id from friend_request where p_id = '7' AND status=1)
        or
     (select p_id from friend_request where send_id = '7' AND status=1) 
        AND
     (select send_id from follower_request where p_id = '7' AND status=1 AND M.uid_fk = '7')
        AND 
     M.uid_fk = 7
  )
 order by M.post_id DESC

查看您的查询,我猜您希望获得在friend_请求或follower_请求表中有条目的posts数据。如果这就是您的意思,那么您可以使用UNION进行查询:

SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, U.l_name
 FROM posts M, person U
 WHERE M.uid_fk=U.p_id
  AND M.uid_fk in (1,2,3,4,7,8,9)
 order by M.post_id DESC  

很难知道你的实际意图,但这可能会有所帮助

SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, 
U.l_name
FROM posts M, person U
WHERE 
   M.uid_fk = 7
   AND M.uid_fk=U.p_id
   AND M.uid_fk in (select send_id from friend_request where p_id = M.uid_fk AND 
   status=1)

UNION ALL

SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, 
U.l_name
FROM posts M, person U
WHERE 
   M.uid_fk = 7
   AND M.uid_fk=U.p_id
   AND M.uid_fk in (select p_id from friend_request where send_id = M.uid_fk AND 
   status=1) 

UNION ALL

SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, 
U.l_name
FROM posts M, person U
WHERE 
   M.uid_fk = 7
   AND M.uid_fk=U.p_id
   AND M.uid_fk in (select send_id from follower_request where p_id = M.uid_fk AND 
   status=1)
ORDER BY post_id DESC

您不能包含或包含在中,但您可以通过OR将两个in连接起来,您所说的“我无法获取当前数据”是什么意思?是否涉及任何错误消息?你能肯定所有的条件都匹配得很好吗?据我所见,中间的情况完全是一团糟。您不能使用这样的条件,即在第1250条中,将一些或和放在一个范围内-其中一个选择中的表“M”不能用于字段列表哦,好的。只需编辑以下语句:orderbym.post\u id DESC to变成:orderbypost\u id DESC。我已经编辑了我以前的答案。我没有得到任何数据。空数据好吧,我前面的回答处理了您所面临的语句内问题。关于您得到的是空数据,如果您发布表和示例表数据以及预期结果集,我可以帮助您解决这个问题。1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第10行“ORDER BY M.post_id DESC LIMIT 0,25”附近使用的正确语法缺少括号,现已更正。
SELECT M.post_id, M.uid_fk, M.message, M.image1,M.roles, M.created,U.uname, U.f_name, U.l_name
FROM posts M
INNER JOIN person U ON M.uid_fk=U.p_id
WHERE  M.uid_fk = 7
AND  ( 
           M.uid_fk in (select send_id from friend_request where p_id = '7' AND status=1)
        OR M.uid_fk in (select p_id from friend_request where send_id = '7' AND status=1)
        )
AND M.uid_fk in(select send_id from follower_request where p_id = '7' AND status=1)
ORDER BY M.post_id DESC