获取与另一行不冲突的mysql行

时间:2012-06-11 04:31:49

标签: php mysql

我有两个表通过id连接在一起,一个是“submit_moderate”,一个是“submit_post”

“submit_moderate”表格如下所示

id     moderated_by     post
1      James            60
2      Alice            32
3      Tim              18
4      Michael          60

我使用简单查询根据“submit_moderate”表从“submit_post”表中获取数据。

$get_posts = mysql_query("SELECT * FROM submit_moderate WHERE moderated_by!='$user'");

$user是签到的人。

现在我的问题是当我运行此查询时,用户'Michael'将检索此

1   James   60
2   Alice   32
3   Tim     18

现在技术上这是正确的,但是我不想检索第一行,因为60与Michael以及James有关。基本上我不想检索该值'60'。

我知道为什么会这样,但我无法弄清楚如何做到这一点。我感谢任何提示或建议。

2 个答案:

答案 0 :(得分:3)

SELECT DISTINCT post
  FROM submit_moderate
 WHERE post NOT IN (SELECT post
                      FROM submit_moderate
                     WHERE moderated_by = 'Michael')

PS:不确定,但在某些情况下,可能值得将嵌套查询的select-part更改为SELECT DISTINCT post

答案 1 :(得分:1)

假设$ user ='Michael';

如果你真的不想要第一排用户,就像你说詹姆斯在帖子中与迈克尔匹配一样 然后去

$ post = mysql_query_first(“SELECT post FROM submit_moderate WHERE moderated_by ='$ user'”);

$ get_posts = mysql_query(“SELECT * FROM submit_moderate WHERE moderated_by!='$ user'and post!='$ post');

$ get_posts = mysql_query(“SELECT * FROM submit_moderate WHERE post NOT IN(SELECT post FROM submit_moderate WHERE moderated_by ='Michael')and moderated_by!='Michael'”);