Database 当外键不返回任何内容时,如何在MySQL中选择记录?

Database 当外键不返回任何内容时,如何在MySQL中选择记录?,database,mysql,left-join,Database,Mysql,Left Join,我运行此查询是为了从三个表中提取数据:视频评分、游戏数据、视频 现在我面临的问题是,结果只显示已评级的视频或由于和videos而在表video\u ratings中的视频。id=video\u ratings.video\u id 是否有任何方法可以选择所有视频的数据,结果显示AVGvideo_ratings.ratings为空,如果这些视频的评级不在video_ratings表中,或者说没有任何视频被评级,那么结果必须显示10行AVGvideo_ratings.ratings列为空 谢谢是的,

我运行此查询是为了从三个表中提取数据:视频评分、游戏数据、视频

现在我面临的问题是,结果只显示已评级的视频或由于和videos而在表video\u ratings中的视频。id=video\u ratings.video\u id

是否有任何方法可以选择所有视频的数据,结果显示AVGvideo_ratings.ratings为空,如果这些视频的评级不在video_ratings表中,或者说没有任何视频被评级,那么结果必须显示10行AVGvideo_ratings.ratings列为空


谢谢

是的,只需使用左侧外部内部连接,而不是内部连接,这就是您正在做的。我还建议您改用JOIN语法。更清楚的是:

SELECT videos.id, videos.game_id, videos.xbox360, videos.ps3, videos.pc,
  videos.wii, videos.other, videos.thumbnail, videos.vid_info, videos.sdvid,
  videos.hdvid, UNIX_TIMESTAMP( videos.date_added ) , game_data.name, 
  AVG( video_ratings.rating )
FROM videos, game_data, video_ratings
WHERE videos.game_id = game_data.id
  AND videos.id = video_ratings.video_id
GROUP BY videos.id, video_ratings.video_id
ORDER BY videos.date_added DESC LIMIT 10;

是的,只要用一个左外内而不是你正在做的内连接。我还建议您改用JOIN语法。更清楚的是:

SELECT videos.id, videos.game_id, videos.xbox360, videos.ps3, videos.pc,
  videos.wii, videos.other, videos.thumbnail, videos.vid_info, videos.sdvid,
  videos.hdvid, UNIX_TIMESTAMP( videos.date_added ) , game_data.name, 
  AVG( video_ratings.rating )
FROM videos, game_data, video_ratings
WHERE videos.game_id = game_data.id
  AND videos.id = video_ratings.video_id
GROUP BY videos.id, video_ratings.video_id
ORDER BY videos.date_added DESC LIMIT 10;

这是一个愚蠢的错误。。我不知道为什么?1054-未知列“字段列表”中的“videos.id”…我的查询运行得非常好,而你的查询似乎也很合法!!这是一个愚蠢的错误。。我不知道为什么?1054-未知列“字段列表”中的“videos.id”…我的查询运行得非常好,而你的查询似乎也很合法!!