选择列的值不等于其他表中其他列的值的结果

时间:2017-09-09 22:42:53

标签: mysql sql select

我正在尝试制作一个投票脚本,人们可以对教师进行评分,但我遇到了问题。

我希望脚本只显示您之前未评级的教师,因为它不会一次又一次地对同一事物进行评分。

我有2个表: 老师和评级

从“老师”表中,我需要teacherId,teacherName和teacherImage的值

从“评级”表中,我想比较userId的值和登录用户的id(我有一个变量和用户的值)

但是对于测试,我只使用id“2”。

完成后,我希望它向每位老师展示该用户尚未投票。我尝试了很多方法,但没有一个像我想的那样工作。

我的最新疑问是:

SELECT t.teacherId, t.teacherName, t.teacherImage, r.userId, r.teacherId
FROM teacher t, rating r
WHERE r.userId = 2 AND t.teacherId != r.teacherId

如果有人知道如何让它发挥作用,我将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

对于未被特定用户评分的教师,不会有任何评分记录。您可以检索用户已评级的教师列表,然后使用NOT IN。

SELECT teacherId, 
       teacherName, 
       teacherImage
  FROM teacher 
 WHERE teacherId NOT IN (SELECT teacherId
                           FROM rating
                          WHERE userId = 2)