gpt4 book ai didi

mysql - 如何从一张表中选择用户尚未选择的所有记录?

转载 作者:行者123 更新时间:2023-11-29 07:43:27 25 4
gpt4 key购买 nike

我知道有类似的问题How to select all records from one table that do not exist in another table?但我有不同的情况

我有一个包含所有记录的 TotalTrainings

TraningCode |  TraningName
1 A
2 B
3 C
4 D
5 E

和另一个表SelectedTraining

TraningCode |  TraningName | EmpCode | AppraisalID
1 A 7190 12
2 B 7190 12
3 C 8132 10
4 D 5555 08
5 E 8132 10

现在,我必须从 TotalTrainings 检索所有未由具有 appraisalId 12EmpCode = 7190 选择的记录(培训)

注意 TotalTraining 的别名是 ttSelectedTrainingst

我已经完成了这样的书面查询:

select tt.trainingCode from TotalTraining tt left join SelectedTraining st
on tt.trainingCode = st.trainingCode where st.trainingCode is null
and EmpCode=7190 and appraisalId =12

但它没有给出任何结果。

我用 NOT IN 实现了同样的效果,而且效果很好

select tt.trainingCode from TotalTraining tt where tt.trainingCode not in 
(
select st.trainingCode from SelectedTraining st where
EmpCode=7190 and appraisalId =12
)

我想用Joins来实现,谁能告诉我哪里可能错了。

注意:请忽略此处的拼写错误,例如区分大小写的 AppraisalIdappraisalId,因为这不是问题

预期输出为

3
4
5

因为这些训练到目前为止还没有被EmpCode 7190选择

最佳答案

对于第一个查询,您需要将大部分条件推送到 on 子句 - 第二个表上的所有条件:

select tt.trainingCode
from TotalTraining tt left join
SelectedTraining st
on tt.trainingCode = st.trainingCode and
st.EmpCode = 7190 and
st.appraisalId = 12
where st.trainingCode is null ;

关于mysql - 如何从一张表中选择用户尚未选择的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460932/

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