您如何编写一个 SQL 查询,您可以在其中检查不同的行在其中一个字段中是否具有相同的值?

How do you write an SQL query where you can check if different rows have the same value in one of the fields?

所以我使用以下方法创建了一些表:

CREATE TABLE IF NOT EXISTS `Staff` (
  `StaffID` VARCHAR(10) NOT NULL,
  `StaffName` VARCHAR(45) NULL,
  `StaffAddress` VARCHAR(45) NULL,
  `StaffEmailAddress` VARCHAR(45) NULL,
  `StaffPhoneNo` VARCHAR(10) NULL,
  `Position` VARCHAR(20) NULL,
  `Workload` VARCHAR(20) NULL,
  `Supervisor` VARCHAR(20) NULL,
  PRIMARY KEY (`StaffID`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `staff_works_campaign` (
`CampaignID` VARCHAR(10) NOT NULL,
`StaffID` VARCHAR(10) NOT NULL,
`SalaryGrade` Integer NOT NULL,
`isSup` VARCHAR(3) NOT NULL,
`StaffName` VARCHAR(45) NOT NULL,
PRIMARY KEY (`StaffID`, `CampaignID`), 
CONSTRAINT `FK_StaffID3` FOREIGN KEY (`StaffID`) REFERENCES `Staff` (`StaffID`),
CONSTRAINT `FK_CampaignID2` FOREIGN KEY (`CampaignID`) REFERENCES `Advertising_Campaign` (`CampaignID`))
ENGINE = InnoDB;

其中给出了表格:

[

所以基本上我想创建一个查询,其中 returns 所有全职员工的 StaffNames,其主管不是他们所从事的活动的经理。 我的做法是先过滤掉非全职员工:

select s.StaffName
from staff s
where s.Workload = 'Full Time';

这给了我所有的全职工人。下一步是弄清楚他们是否在由他们的一位主管管理的活动中工作。

我的想法是看看 staff_works_campaign.staffname = staff.supervisor 对于全职工作人员,当 campaignID 与非主管工作人员相同时(也就是主管和工作人员都在同一个活动中工作)。

我不确定如何根据相同的 campaignID 进行查询并添加条件 staff_works_campaign.staffname = staff.supervisor. 谢谢!

加入两个表两次,一次为工作人员,一次为主管。

SELECT s.staffName
FROM Staff AS s
JOIN Staff AS sup ON s.Supervisor = sup.StaffName
JOIN staff_words_campaign AS c ON c.StaffID = s.StaffID
JOIN staff_words_campaign AS csup ON csup.StaffID = sup.StaffID AND c.CampaignID = csup.CampaignID