如何在ms访问中获得与下面的SQL代码相同的结果?它无法识别EXCEPT
子句......
SELECT DISTINCT
P.Name,
T.Training
FROM Prof AS P,
Training_done AS TC,
Trainings AS T
WHERE (P.Name Like '*' & NameProf & '*')
AND (P.Primary_Area = T.Cod_Area)
EXCEPT
SELECT DISTINCT
P.Name,
T.Training
FROM Prof AS P,
Training_done AS TC,
Trainings AS T
WHERE (P.Name Like '*' & NameProf & '*')
AND (P.Cod_Prof = TC.Cod_Prof);
提前致谢!
答案 0 :(得分:6)
为了摆脱EXCEPT
你可以结合条件并否定第二个:
SELECT DISTINCT
P.Name,
T.Training
FROM Prof AS P,
Training_done AS TC,
Trainings AS T
WHERE ((P.Name Like '*' & NameProf & '*') AND
(P.Primary_Area = T.Cod_Area))
AND NOT ((P.Name Like '*' & NameProf & '*') AND
(P.Cod_Prof = TC.Cod_Prof));
答案 1 :(得分:3)
SELECT A.x FROM A
EXCEPT
SELECT B.x FROM B
对应
SELECT A.x FROM A
LEFT JOIN B
ON A.x = B.x
WHERE B.x IS NULL
答案 2 :(得分:0)
在MS Access中使用查找不匹配的向导>创建> 查询向导,您将获得以下结果
联盟是一个单独的访问查询,我用来联合几个表而不是使用子查询
SELECT TableMain.Field1
FROM TableMain LEFT JOIN [Union] ON TableMain.[Field1] = Union.[field1]
WHERE (((Union.field1) Is Null));
答案 3 :(得分:0)
这里不是一个明确的例子,但考虑UNION处理两个获取的表,并从该联合中选择具有少于2个特定字段组合实例的对。这意味着,如果每个表在字段组合中具有多个具有相同值的记录实例,则这些记录是相同的,可以从结果集中删除。如果没有,它们对于一个表是唯一的,只留下来自所选表的记录,其中与另一个表不匹配。有点像穷人"除了" KW。