2011-08-22 177 views
0

我有一個需要當前視頻的標籤並將其與其他視頻匹配以獲得結果。唯一的問題是我想排除標籤來自的視頻(排除特定的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"; 
+0

嘗試在SQL客戶端查詢 - 它會與錯誤的回覆(如「失蹤)」或「VID_ID列名稱不明確「。 – Konerak

回答

3
  1. 你忘了關閉括號 ON子句後?

  2. 此外,由於你的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"; 
+0

MySQL中'!='和'<>'有什麼區別?我一直以爲你必須用'<>',但[本手冊頁](http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_not-equal)意味着它們'同樣的事情。 – AgentConundrum

+0

對不起,那些完全一樣。將查詢更改爲更接近原始查詢 - 對於'!='或'<>'成爲這裏的罪魁禍首,混淆的可能性較小。 – Konerak

+0

我以爲是。直到您將解釋添加到您的帖子的開頭,我沒有注意到關閉的問題。唯一突出的是''''''改變,所以我認爲這是你的修復。 – AgentConundrum