gpt4 book ai didi

MySQL列出一个表中的所有行,不包括另一表已引用的行

转载 作者:行者123 更新时间:2023-11-29 12:44:37 25 4
gpt4 key购买 nike

我花了一些时间在互联网上寻求帮助,但我的运气并不好。我觉得我错过了一些明显的东西,我又累又恼火,哈哈

我有两张 table 。一种称为 RolesAndServices,另一种称为 Roles。它们看起来像这样。

Roles
- ID
- Name

RolesAndServices
- ID
- JobID
- RoleID
- ClientID
- PeopleID

我试图实现的目标是这样的:

SELECT Roles.ID, Roles.Name FROM Roles, RolesAndServices WHERE
RolesAndServices.RoleID = Roles.ID AND NOT RolesAndServices.JobID = 1

不起作用的原因是 RolesAndServices 中的所有项目(当前)的 JobID 为 1。这足够了。所以我明白为什么这不起作用。

我试图实现的是角色中所有项目的列表,排除同时存在的角色

  1. 出现在 RolesAndServices 表中并且
  2. JobID 设置为 1

基本上,最终目标是创建一个 HTML 选择,其中包含除已为该作业设置的选项之外的每个角色的选项。

例如,假设总共有三个角色:

  1. 老师
  2. 学生
  3. 家长

如果作业已添加了教师角色,则 RolesAndServices 会有一个条目,其中包含教师的 roleid 和相关作业的 jobid。当向该作业添加另一个角色时,可用选项应该是

  1. 学生
  2. 家长

我也尝试了各种基于连接的查询,但均无济于事。选择所有角色,然后排除那些已在角色和服务中使用的角色是可以实现的,我只是在将排除限制为特定的作业编号时遇到了麻烦。

预先感谢您的帮助!

最佳答案

使用不存在

SELECT  ID, Name
FROM Roles ro
WHERE NOT EXISTS
(
SELECT NULL
FROM RolesAndServices rs
WHERE ro.ID = rs.RoleID
AND rs.JobID = 1
)

关于MySQL列出一个表中的所有行,不包括另一表已引用的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25618258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com