为了得到一个特定的结果,我已经花了几个小时的时间在网上找不到任何答案——而且我根本不是一个SQL专家,所以我在这里问了一个问题。
我有3个表:user
(id
,name
…),cars
(id
,type
,color
,engine power
…)和一个中间表,用来保存用户给汽车的所有分数:scores
(id
,user_id
,car_id
,score
,)。
我试图找到一个查询,可以返回一个特定的用户,所有的车,他还没有评级。我尝试了以下操作,但返回空值:
$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/