我有两张桌子,一张是学生名单,另一张是餐厅名单。人员表格包含PK作为FK包含在餐馆表格中。餐桌包含学生喜欢在餐厅吃饭的日子(以及他们在餐厅吃饭的时间)。我试图找到周一不喜欢在餐厅用餐的学生。我尝试使用下面的查询,但它列出了所有的学生,而不是周一没有外出的那些学生。MS SQL不喜欢查询
SELECT DISTINCT SName
FROM Dinner AS D
INNER JOIN Student AS S ON D.SID = S.SID
WHERE DinnerDay NOT LIKE 'Monday'
GROUP BY SName
考虑使用'where not exists'查询。另外,使用'distinct'和'group by'都是不必要的:都返回唯一的'SName'。如果你正在汇总(sum,avg等),使用'group by',如果你只想返回唯一值,使用'distinct'。 – HoneyBadger
好了,尝试了以下,但它不喜欢的NOT EXISTS语法:SELECT DISTINCT SNAME FROM晚餐d INNER JOIN学生为S \t ON D.SID = S.SID WHERE DinnerDay NOT EXISTS '星期一' –
你为什么不用'<>'来代替'NOT LIKE'?您的NOT EXISTS语法错误。如果您仍想使用'NOT LIKE',请使用'NOT LIKE'Monday%'。 – user6542823