如何在排除某些结果的同时加入几个MySQL查询?

用户名

MySQLFiddle在这里:http ://sqlfiddle.com/#!2/12213/16

我有三个要处理的表。

表1:users表(存储数据库中每个用户的数据)
表2:users_fav表(存储将另一个用户添加为收藏的每个用户的数据
表3:users_rated表(存储对另一个用户进行评级的每个用户的数据)

users_fav列中users_rated存储users.uid进行评分或收藏的用户以及他们要添加到的用户users_fav.uidusers_rated.uidusers_fav.matchuidusers_rated.matchuid

我想要的最终结果:
我需要从用户表中拉出尚未被指定用户评级或收藏的所有用户。在sql小提琴数据中,试图提取结果的用户是用户ID 1,该用户具有多个其他用户,这些用户出于测试目的而受到评价和喜爱。

我已经构建了联接并尝试了一些操作,但无法获得所需的结果。这是我尝试过的方法(请在上面发布的小提琴中提供参考数据和评论)。应当假设用户标识1试图提取用户1尚未收藏或评价的所有用户:

#attempt one shows no results
SELECT users.uid, users.gender, users.username
FROM users
LEFT JOIN users_fav
ON users.uid=users_fav.matchuid 
LEFT JOIN users_rated
ON users.uid=users_rated.matchuid
WHERE users.uid > 0
AND users.gender = 0
AND users_fav.uid <> 1
AND users_rated.uid <> 1
ORDER BY users.uid ASC;

这根本没有显示任何结果。我尝试将users_fav以及加入users_rateduidmatchuid

#attempt two shows all results with gender 0
SELECT users.uid, users.gender, users.username
FROM users
LEFT JOIN users_fav
ON users.uid=users_fav.matchuid AND users_fav.uid <> 1
LEFT JOIN users_rated
ON users.uid=users_rated.matchuid AND users_rated.uid <> 1
WHERE users.uid > 0
AND users.gender = 0
ORDER BY users.uid ASC;

我尝试使用联接对第二个查询进行排除。似乎忽略了这一点,并返回了7个用户中的6个,只排除了性别为1的用户1(在查询中不包括该用户)。

任何指导表示赞赏。

谢谢。

niyou

可以工作...

SELECT users.uid, users.gender, users.username
FROM users
    LEFT JOIN users_fav ON users.uid=users_fav.matchuid AND users_fav.uid = 1
    LEFT JOIN users_rated ON users.uid=users_rated.matchuid AND users_rated.uid = 1
WHERE users_fav.uid IS NULL AND users_rated.uid IS NULL

这将为您提供所有未评级且不喜欢的人(最终您想要还是?)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

排除SQL查询的某些结果

来自分类Dev

如何在保留查询结果的同时从查询中检索 MAX()?

来自分类Dev

MySQL / MariaDB-LIMIT加入查询结果,同时不丢失任何主ID

来自分类Dev

如何从MySQL查询中排除非数字列结果?

来自分类Dev

如何在MySQL中自我加入聚合函数的结果?

来自分类Dev

如何在PHP MySQL中加入更多UPDATE查询

来自分类Dev

当使用Join且2个表的字段名称相同时,如何在MYSQL查询中查明正确的结果?

来自分类Dev

如何排序几个异步JQuery查询的结果?

来自分类Dev

如何排序几个异步JQuery查询的结果?

来自分类Dev

如何编写linq查询以排除某些记录?

来自分类Dev

MySQL查询以排除空值列的结果

来自分类Dev

从JOIN中的MySQL查询中排除结果

来自分类Dev

如何在Eclipse开放资源结果列表中排除某些项目/路径?

来自分类Dev

如何在排除一条记录的同时查询重叠约会?

来自分类Dev

如何在一个查询中汇总几个表的函数结果?

来自分类Dev

如何在MySQL中同时查询帖子和帖子赞?

来自分类Dev

MySQL将多个查询结果加入1个结果集

来自分类Dev

MySQL将多个查询结果加入1个结果集中

来自分类Dev

可以从MySQL查询缓存中排除某些查询吗?

来自分类Dev

如何在同一查询中加入不同聚合函数的结果?

来自分类Dev

MySQL SELECT DISTINCT 如何加入一些对应的列来查询结果

来自分类Dev

mysql查询结果未显示某些行

来自分类Dev

如何在MySQL查询中的何处使用除法结果?

来自分类Dev

如何在mysql查询中重用结果集

来自分类Dev

如何在`node-mysql`查询中获得结果的值

来自分类Dev

如何在mysql查询中重用结果集

来自分类Dev

如何在mysql查询中获得所需的结果?

来自分类Dev

PHP Mysql如何在查询无结果时显示消息?

来自分类Dev

如何在jsp页面中获取mysql查询结果?

Related 相关文章

  1. 1

    排除SQL查询的某些结果

  2. 2

    如何在保留查询结果的同时从查询中检索 MAX()?

  3. 3

    MySQL / MariaDB-LIMIT加入查询结果,同时不丢失任何主ID

  4. 4

    如何从MySQL查询中排除非数字列结果?

  5. 5

    如何在MySQL中自我加入聚合函数的结果?

  6. 6

    如何在PHP MySQL中加入更多UPDATE查询

  7. 7

    当使用Join且2个表的字段名称相同时,如何在MYSQL查询中查明正确的结果?

  8. 8

    如何排序几个异步JQuery查询的结果?

  9. 9

    如何排序几个异步JQuery查询的结果?

  10. 10

    如何编写linq查询以排除某些记录?

  11. 11

    MySQL查询以排除空值列的结果

  12. 12

    从JOIN中的MySQL查询中排除结果

  13. 13

    如何在Eclipse开放资源结果列表中排除某些项目/路径?

  14. 14

    如何在排除一条记录的同时查询重叠约会?

  15. 15

    如何在一个查询中汇总几个表的函数结果?

  16. 16

    如何在MySQL中同时查询帖子和帖子赞?

  17. 17

    MySQL将多个查询结果加入1个结果集

  18. 18

    MySQL将多个查询结果加入1个结果集中

  19. 19

    可以从MySQL查询缓存中排除某些查询吗?

  20. 20

    如何在同一查询中加入不同聚合函数的结果?

  21. 21

    MySQL SELECT DISTINCT 如何加入一些对应的列来查询结果

  22. 22

    mysql查询结果未显示某些行

  23. 23

    如何在MySQL查询中的何处使用除法结果?

  24. 24

    如何在mysql查询中重用结果集

  25. 25

    如何在`node-mysql`查询中获得结果的值

  26. 26

    如何在mysql查询中重用结果集

  27. 27

    如何在mysql查询中获得所需的结果?

  28. 28

    PHP Mysql如何在查询无结果时显示消息?

  29. 29

    如何在jsp页面中获取mysql查询结果?

热门标签

归档