仅从数据库中选择之前未选择的那些值

时间:2018-03-28 03:29:11

标签: mysql sql

我有一个表categoryprofileemployee_belongs_to,其中employee_belongs_to存储了profile_id和category_id。 profile表存储了所有员工的详细信息。 category表存储了不同的类别,如英语,数学,物理......

我选择了profile表中与特定类别相对应的所有员工。我在employee_belongs_to表中有所有配置文件ID和类别ID,所以我加入了表,只选择了profile表中其profile_id对应于employee_belongs_to表中特定category_is的那些名称。以下是我写的SQL语句。

SELECT profile.* FROM profile JOIN employee_belongs_to JOIN category ON 
employee_belongs_to.Profile_id=profile.Profile_id AND 
employee_belongs_to.Category_id=category.Category_id WHERE 
category.Category_id=? " 

现在我想只选择上面SQL语句名称未检索的员工。我该如何编写SQL语句?

2 个答案:

答案 0 :(得分:2)

这将允许您1,2 and 3SELECT中的所有列,而不包括特定的个人资料ID:

PROFILE

另外,我建议使用像我为可读性而做的别名(SELECT p.* FROM [PROFILE] p WHERE p.Profile_ID NOT IN ( SELECT p.Profile_ID FROM [PROFILE] p INNER JOIN employee_belongs_to ebt ON p.Profile_id = ebt.Profile_id INNER JOIN category c ON ebt.Category_id = c.Category_id WHERE c.Category_id = 15); pebt),并改变你的c就像我一样完成。

答案 1 :(得分:0)

当您触发上述查询时,您将获得array个数据。基于此,您应该存储数组中的id值。然后,您可以使用NOT IN()的{​​{1}}功能。使用它,您将能够获取保留数据。

mysql

它将返回不考虑SELECT * FROM tableName WHERE tableName.id NOT IN (1,2,3);的id的数据。

我希望它可以帮到你