MySQL Query Join 从两个表中选择不匹配的行

标签 mysql sql join mysql5

我有如下两个表。


user_id   |   username        |  first_name |   role_type
-----------------------------------------------------------
1         |   testuser1       |  testu1     |    student
2         |   testuser2       |  testu2     |    student
3         |   testuser3       |  testu3     |    student
4         |   testuser4       |  testu4     |    student
5         |   testuser5       |  testu5     |    student
6         |   testuser6       |  testu6     |    admin
7         |   testuser7       |  testu7     |    admin
-----------------------------------------------------------

user_id   |   username         |    approved_id
----------------------------------------------------------------------
1         |   testuser1        |  3B888F52-50BC-11E2-B08B-99E5B2CADDF7
2         |   testuser2        |  3B888F52-50BC-11E2-B08B-99E5B2CADDF7
3         |   testuser3        |  3B888F52-50BC-11E2-B08B-99E5B2CADDF7
----------------------------------------------------------------------

我试过查询

SELECT users.* FROM users 
WHERE users.username NOT IN(
     SELECT users_approval.username FROM users_approval 
     WHERE users_approval.approved_id = "3B888F52-50BC-11E2-B08B-99E5B2CADDF7"
) AND users.role_type = "student"

结果如下


user_id   |   username        |  first_name |   role_type
-------------------------------------------------------------
4         |   testuser4       |  testu4     |    student
5         |   testuser5       |  testu5     |    student
-------------------------------------------------------------

有没有办法使用 JOIN 来获取与上面相同的结果集?。

非常感谢您的帮助。

最佳答案

SELECT users.* 
FROM   users 
       LEFT JOIN users_approval b
          ON users.username = b.username AND
             b.approved_id = "3B888F52-50BC-11E2-B08B-99E5B2CADDF7"
WHERE  users.role_type = "student" AND
       b.approved_id IS NULL

关于MySQL Query Join 从两个表中选择不匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14275259/

相关文章:

php - 所有需要连接到 mysql 的请求都非常非常慢(使用 Phalcon)

PHP/MySQL : I think I need to use a JOIN here, 但我不知道怎么办

mysql - 通过时间戳进行 SQL 分组产生了意想不到的结果

mysql - Database Join连接4张表

mysql - 将多个子行合并为一行MYSQL

Mysql Select Distinct w TRIM() 和 Subselect 优化性能

mysql - 存储过程 CONCAT() 错误代码 1054,未知列

sql - 使用不同的值更新列中的多个表行

mysql - 外键列的唯一约束

c# - 某些 SQL JOINS 是否会使您的 ASP.NET 应用程序非常慢?