为了得到一个特定的结果,我已经花了几个小时的时间在网上找不到任何答案——而且我根本不是一个SQL专家,所以我在这里问了一个问题。
我有3个表:useridname…),carsidtypecolorengine power…)和一个中间表,用来保存用户给汽车的所有分数:scoresiduser_idcar_idscore,)。
我试图找到一个查询,可以返回一个特定的用户,所有的车,他还没有评级。我尝试了以下操作,但返回空值:

$q=mysql_query("SELECT * FROM cars LEFT OUTER JOIN scores ON cars.id = scores.car_id WHERE scores.user_id != ('".$userId."')");

有人有线索吗?

最佳答案

SELECT
  *
FROM
  cars
WHERE
  NOT EXISTS (SELECT 1 FROM scores WHERE car_id = cars.id AND user_id = ?)

其中?是特定用户的ID。
在这里,scores(car_id, user_id)的复合指数是有用的。

关于mysql - 联接3个表时如何搜索,但排除其中之一的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7216369/

10-11 05:00