用户/订阅者sql查询

时间:2010-01-22 02:47:43

标签: php mysql

我正在创建一个表格,显示当前用户尚未订阅的所有注册用户。但是一旦他订阅了某人,我就需要过滤该列表以排除这些。

假设有一个名为已订阅的表格,其中列出了用户以及他订阅的用户。

|UserId||SubscriberID|

很容易将它变成多个查询,但是我一直试图将它变成一个查询,以节省额外的MySQL调用循环。

这是我到目前为止所拥有的:

 SELECT u.UserID, FullName, UserName from users u 
    LEFT JOIN subscribed t ON 
     ((u.UserName LIKE '%$search%' OR 
       u.Email LIKE '%$search%') AND 
      ({$_SESSION['ID']} = t.UserID 
        AND t.FollowerID != u.UserID)
     )

我知道查询的最后一部分是错误的,因为我只比较UserID和FollowerID是否与一个特定行不匹配,而不是整个表。

1 个答案:

答案 0 :(得分:0)

要查找表A中不在表B中的结果列表,您有两个选项。使用NOT IN语法或LEFT JOIN并查看B表中PK字段的位置NULL

NOT IN示例:

SELECT a.id FROM a WHERE a.id NOT IN (SELECT b.id FROM b)

LEFT JOIN示例:

SELECT a.id FROM a LEFT JOIN b ON (a.id = b.id) WHERE (b.id IS NULL)