函数not in PHP中存在多个条件

函数not in PHP中存在多个条件,php,mysql,Php,Mysql,我正在检查用户是否观看了视频。我有两个表——一个是视频id和观看视频的用户id。另一个有视频 SELECT * FROM videos WHERE Channel LIKE '%$finalmood%' AND WHERE NOT IN(select * from userviews where userviews.videoid = videos.id where userviews.userid = $tempuser 我想我可能使用notin函数不正确。如何在n

我正在检查用户是否观看了视频。我有两个表——一个是视频id和观看视频的用户id。另一个有视频

SELECT * 
FROM videos 
WHERE Channel LIKE '%$finalmood%' 
AND WHERE NOT IN(select * from userviews 
    where userviews.videoid = videos.id 
    where userviews.userid = $tempuser
我想我可能使用notin函数不正确。如何在notin函数上定位多个条件

提前感谢-

您可以通过左键连接:

顺便说一句,请确保对$tempuser进行了清理。

您可以使用左连接:


顺便说一句,请确保清理$tempuser。

只需删除第二个where-in-where-not-in和视频后的第二个where-in。id将其更改为,并希望它选择尚未观看的行-因此not-in是一个关键功能。至少,我相信不要使用select*,因为您没有利用任何可能存在的索引,并且可能获得比实际使用更多的数据。另外,请尝试重新修改您的查询,使其不存在,因为它的速度非常慢。有没有办法不在@hd1中看不到您的数据库,我不知道。只需删除第二个where in where not in和视频后的第二个where not in。id将其更改为,我希望它选择尚未观看的行-因此not in是一个关键功能。至少,我相信不要使用select*,因为您没有利用任何可能存在的索引,并且可能获得比实际使用更多的数据。另外,请尝试重新编写查询,使其在不使用not in的情况下存在,因为它的速度非常慢。有没有办法不使用@HD1而看不到您的数据库,我不知道。我支持这种方法,因为子选择的资源更密集,即速度较慢。为什么“和userviews.videoid为NULL?”@Akam它会选择userviews1表中不匹配的行。如果我的userviews表可能有成千上万行,这是否是一种有效的方法?我根据用户是否观看视频来填充userviews。@user2040490如果userviews.videoid索引正确,它应该可以正常工作;这里的决定因素实际上是视频中的条目数。我支持这种方法,因为子选择的资源更密集,即较慢。为什么“和userviews.videoid为NULL?”@Akam它选择在userviews1表中不匹配的行。如果我的userviews表可能是数千行,这是一种有效的方法吗数千行?我根据用户是否观看视频来填充userviews。@user2040490如果userviews.videoid索引正确,它应该可以正常工作;这里的决定因素实际上是视频中的条目数量。
SELECT * 
FROM videos 
LEFT JOIN userviews ON userviews.videoid = videos.id AND userviews.userid = $tempuser
WHERE Channel LIKE '%$finalmood%' AND userviews.videoid IS NULL