排除查询结果
我有一个需要当前视频的标签并将其与其他视频匹配以获得结果。唯一的问题是我想排除标签来自的视频(排除特定的vid_id)。我尝试了以下,但行AND vid_id!=some_id
打破它。有任何想法吗?排除查询结果
$sql = "SELECT video.*,COUNT(*) as count FROM tags LEFT JOIN video
ON (tags.vid_id = video.vid_id)
WHERE name IN(?,?) AND vid_id!=some_id
GROUP BY vid_id ORDER BY count DESC LIMIT 5";
你忘了关闭括号 ON子句后?
此外,由于你的VID_ID列是同时存在于视频表 并在标签表,你需要的 WHERE子句在指定表名(是的,即使ON语句要求他们是 等于)
这给:
$sql = "SELECT video.*,COUNT(*) as count
FROM tags
LEFT JOIN video
ON (tags.vid_id = video.vid_id)
WHERE name IN(?,?)
AND video.vid_id != some_id
ORDER BY count DESC
LIMIT 5";
MySQL中'!='和''有什么区别?我一直以为你必须用'',但[本手册页](http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_not-equal)意味着它们'同样的事情。 – AgentConundrum
对不起,那些完全一样。将查询更改为更接近原始查询 - 对于'!='或''成为这里的罪魁祸首,混淆的可能性较小。 – Konerak
我以为是。直到您将解释添加到您的帖子的开头,我没有注意到关闭的问题。唯一突出的是''''''改变,所以我认为这是你的修复。 – AgentConundrum
尝试在SQL客户端查询 - 它会与错误的回复(如“失踪)”或“VID_ID列名称不明确“。 – Konerak