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

Tay*_*Mac 1 php mysql join

我很难创建一个mySQL join语句.

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

$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");
Run Code Online (Sandbox Code Playgroud)

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

Boo*_*eus 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;
Run Code Online (Sandbox Code Playgroud)

我也会explain查询此查询,以防您使用正确的索引来最大化查询的性能


Mae*_*lyn 5

首先,逻辑和mysql不是,&&但是AND,像这样:

SELECT * from table WHERE field1 = 'value1' AND field2 = 'value2';
Run Code Online (Sandbox Code Playgroud)

您还应该使用更新的连接语法,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

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