我有一个表category
,profile
和employee_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语句?
答案 0 :(得分:2)
这将允许您1,2 and 3
表SELECT
中的所有列,而不包括特定的个人资料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);
,p
,ebt
),并改变你的c
就像我一样完成。
答案 1 :(得分:0)
当您触发上述查询时,您将获得array
个数据。基于此,您应该存储数组中的id
值。然后,您可以使用NOT IN()
的{{1}}功能。使用它,您将能够获取保留数据。
mysql
它将返回不考虑SELECT * FROM tableName
WHERE tableName.id NOT IN (1,2,3);
的id的数据。
我希望它可以帮到你