我很难创建一个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)
我是这些陈述的新手,非常感谢任何帮助或指导.
这是您的查询:
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查询此查询,以防您使用正确的索引来最大化查询的性能
首先,逻辑和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)
注意连接表达式(我使用内部连接,假设两个表中都需要存在匹配的记录) - 它使您的位置更清晰,更易于阅读.