带IN子句的SQL查询

时间:2012-12-20 13:28:17

标签: php mysql sql database

我正在开设一个页面,就像facebook feed页面一样。 所以,我的查询现在看起来像这样:

$sql = "SELECT * 
        FROM event 
        WHERE id_user IN (
              SELECT a.id_user_stalkers 
              FROM stalkers a 
              WHERE a.id_user = ".$id_profile.")  
        ORDER by date DESC 
        LIMIT 0, 10";
潜行者 - 朋友

表Stalkers:

id  id_user  id_user_friend

我需要在IN子句中添加我的个人ID,所以我的qyery会返回我的活动和我的朋友活动。

任何人都可以帮助我吗?

我尝试了什么

 $sql = "SELECT * 
         FROM event 
         WHERE id_user IN (
               SELECT a.id_user_stalkers 
               FROM stalkers a  
               WHERE a.id_user = ".$id_profile.") 
        OR id_user = ".$id_profile."  
        ORDER by date DESC 
        LIMIT 0, 10";

2 个答案:

答案 0 :(得分:1)

你的sql和你的表格看起来有些不对劲

在您的表格中,您有id_user_friend,并且在您的SQL中,您正在id_user_stalkers

2-我不知道你的第一张桌子上是否有约会,或者你的意思是NOW()。因为你没有分享第一张桌子。

试试这个

 $sql = "SELECT * FROM event e WHERE id_user 
           IN (SELECT a.id_user_friend FROM stalkers a  
           WHERE a.id_user = ".$id_profile.")
            OR e.id_user = ".$id_user." 
          ORDER by e.date DESC LIMIT 0, 10";

答案 1 :(得分:0)

什么是$ id_user?原始查询只有一个变量。我不明白为什么你需要另一个。换句话说,试试这个:

SELECT *
FROM event e
WHERE id_user IN (SELECT a.id_user_friend
                  FROM stalkers a  
                  WHERE a.id_user = ".$id_profile."
                 ) OR
     e.id_user = ".$id_profile." 
ORDER by e.date DESC LIMIT 0, 10