从mySQL JOIN语句返回的重复值。救命?

时间:2011-11-18 00:48:07

标签: php mysql join

我很难创建mySQL连接语句。

问题是它似乎返回了正确的结果,但它返回重复项。

$result= mysql_query("SELECT Photos.Filename, Photos.Filetype
FROM Photos, PhotoUserTags
WHERE PhotoUserTags.User_ID IN ($friendlist) && PhotoUserTags.Photo_ID = Photos.Photo_ID && Photos.Event_ID = $eid");

我是这些陈述的新手,非常感谢任何帮助或指导。

3 个答案:

答案 0 :(得分:6)

这是您的查询:

SELECT 
  Photos.Filename, Photos.Filetype
FROM Photos
INNER JOIN PhotoUserTags ON (PhotoUserTags.Photo_ID = Photos.Photo_ID)
WHERE 
  Photos.Event_ID = $eid
  AND PhotoUserTags.User_ID IN ($friendlist) /* assuming they are IDs separated by a comma) */
GROUP BY Photos.Photo_ID;

如果你使用正确的索引来最大化你的查询性能,我也会explain这个查询

答案 1 :(得分:5)

首先,逻辑和mysql不是&&而是AND,如下所示:

SELECT * from table WHERE field1 = 'value1' AND field2 = 'value2';

您还应该使用更新的连接语法:

SELECT Photos.Filename, Photos.Filetype
FROM Photos, PhotoUserTags
INNER JOIN PhotoUserTags ON PhotoUserTags.Photo_ID = Photos.Photo_ID
WHERE PhotoUserTags.User_ID IN ($friendlist)
  AND Photos.Event_ID = $eid
GROUP BY Photos.Photo_ID

注意连接表达式(我使用内连接,假设两个表中都需要存在匹配的记录) - 它使您的位置更清晰,更容易阅读。

答案 2 :(得分:0)

这有用吗:

$result= mysql_query("SELECT Photos.Filename, Photos.Filetype
FROM Photos, PhotoUserTags
WHERE PhotoUserTags.User_ID IN ($friendlist) && PhotoUserTags.Photo_ID = Photos.Photo_ID && Photos.Event_ID = $eid  GROUP BY Photos.Photo_ID");