gpt4 book ai didi

mysql - 如何编写 SQL 查询来检查不同行的某个字段中是否具有相同的值?

转载 作者:行者123 更新时间:2023-11-29 09:35:19 24 4
gpt4 key购买 nike

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

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;

这给出了表格:

Table1[Table2[2]

所以基本上我想创建一个查询,它返回所有全职员工的员工姓名,这些员工的主管不是他们所从事的事件的经理。我对此的方法是首先过滤掉非全职员工:

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

这给了我所有的全职 worker 。下一步是确定他们是否参与由其主管之一管理的事件。

我的想法是看看staff_works_campaign.staffname = Staff.supervisor对于全职工作人员,当事件 ID 与非主管工作人员相同时(即主管和工作人员都在同一事件中工作)。

我不确定如何基于相同的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

关于mysql - 如何编写 SQL 查询来检查不同行的某个字段中是否具有相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57775700/

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