如何找到2个表之间的mysql差异

时间:2012-07-23 19:04:55

标签: php mysql database join

图片和Seen_pictures,图片表格中的图片显示给用户,然后该图片(表格中的ID)移动到Seen_Pictures,并向用户显示图片表格中的新图片。我需要一个mysql方案,它将输出Pictures和Seen_pictures表之间的差异,这样我知道用户没有看到的图片,并且可以输出它们。

到目前为止,我有这个,但它只适用于1个用户,我需要它来解释许多不同的用户:

$result = mysqli_query(
    $link, 

    "SELECT o_Pics.Pic.PicID 
    FROM o_Pics.Pic 
    LEFT JOIN o_SeenPics.Seen ON o_Pics.Pic.PicID=o_SeenPics.Seen.PicID 
    WHERE NOT o_Pics.Pic.ID='".$ID."' AND o_SeenPics.Seen.PicID IS NULL"
);

2 个答案:

答案 0 :(得分:0)

怎么样

SELECT p.p_id FROM Picture p WHERE p.p_id NOT IN 
   (SELECT s.p_id FROM Seen_Picture s WHERE s.u_id = "$user_id")

Picture
p_id(Primary Key) picture

Seen_Picture
id(Primary Key) u_id p_id

答案 1 :(得分:0)

我认为您可以对原始查询进行一些小修改,以获得您想要的内容:

SELECT s.UserId, p.PicID 
FROM o_Pics.Pic p LEFT JOIN
     o_SeenPics.Seen s
     ON p.PicID = s.PicID and
        p.OwnerUserId != s.UserId
where s.PicId is null and p.OwnerUserId != s.UserId   

这假设pic拥有其所有者的用户ID。它还返回没有看到图片的用户ID。