mysql - sql连接外键表

标签 mysql sql

我想从我的数据库中选择所有电子邮件以 @gmail.com 结尾的用户,这些用户还不在 groupID 4 的组中。

问题是我的 user_to_group 表如下所示:

userID | groupID
--------------------
1      | 5
1      | 4
1      | 3
2      | 3
2      | 6

groupID 为 4 的用户被排除在外,但因为他们也在其他组中,所以无论如何都会被选中。在此示例中,我只需要具有 userID 2 的用户。

是否可以排除组 4 中的用户而不考虑其他组?

SELECT * FROM wcf13_user user_table
RIGHT JOIN wcf13_user_to_group ON (wcf13_user_to_group.userID = user_table.userID && groupID != 4 )
WHERE user_table.email LIKE "%@gmail.com"

最佳答案

是的,您可以使用 EXISTS 子查询来完成:

SELECT *
FROM wcf13_user user_table u
WHERE user_table.email LIKE "%@gmail.com" -- Has a gmail account
  AND NOT EXISTS (                        -- Is not a member of group #4
       SELECT *
       FROM wcf13_user_to_group g
       WHERE u.userID=g.userID AND groupID = 4
  )

关于mysql - sql连接外键表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637106/

相关文章:

mysql查询输出购买过该用户购买过的任意同款车型的人数

mysql - SQL中的手动订单

php - Prestashop 产品功能 PHP SQL

PHP 编辑数据库条目不更新

mysql - SQL 性能 UNION 与 OR

Mysql:用多列的值更新一列的值

sql - 提高查询性能

mysql - 为什么mysql LIKE查询有时无法返回结果?

Mysql 没有利用 "select * from table where (col,col) in"中的主键

php - 无法从数据库中获取数据并在 css 和 html 中打印