使用MySQL

时间:2016-12-30 12:43:55

标签: mysql mariadb except

我有一个包含视频信息的表格,当有人在我的网站上选择一个视频时,我有一个小部分,显示所有其他类似标签的视频。现在,我想要排除当前所选的视频。这是我的疑问:

SELECT video_title, video_desc
FROM videos WHERE tags LIKE 
$CurrentTags AND   
'$CurrentVideo' NOT IN
(SELECT video_id FROM videos WHERE video_id = '$CurrentVideo')

查询工作正常(因为没有错误),但它有时仍会返回已经选择的视频。我认为这很明显,但无论如何我都会澄清

$ CurrentTags是网站上当前所选视频的一组标签。

$ CurrentVideo是网站上当前所选视频的唯一视频ID。

2 个答案:

答案 0 :(得分:1)

这必须与没有子选择的查询相同:

SELECT video_title, video_desc
FROM videos 
WHERE (
    tags LIKE $CurrentTags
OR
    tags LIKE $otherTags
OR
    tags LIKE $otherTags
)
AND   
    video_id <> '$CurrentVideo';

答案 1 :(得分:0)

(SELECT video_id FROM videos WHERE video_id = '$CurrentVideo')。该子查询返回与其输入相同的输出。您已有视频ID;你不需要再次选择它。你有没有尝试过那里的不平等算子?此外,你将它与自身进行比较,不是吗?试试这个:

video_id <>'$CurrentVideo'