SQL RIGHT JOIN查询返回null而非实际名称,如何排查错误?
SQL查询问题排查与修正
现有查询的三处错误
- 关联字段逻辑错误:你写的JOIN关联条件
video.vidVideoID = copy.copCopyID不符合表结构设计逻辑。copCopyID是副本表自身的唯一标识主键,和视频主表的视频ID没有关联关系,副本表中存储对应视频ID的是专门的外键字段(可查看你copy表的字段列表确认字段名,通常命名类似copVideoID)。两个完全无关的字段做关联,自然匹配不到对应的视频信息,所以返回的视频标题等字段为null。 - 筛选条件写反:你要查询未被借出的视频,
copCurrentlyHired字段值为0才代表未借出,你当前写的=1是筛选已借出的副本,和需求完全相反。 - JOIN类型冗余:你需要获取有对应视频信息的副本记录,用
INNER JOIN就可以自动过滤掉匹配不到视频的无效副本,不需要用RIGHT JOIN。
修正后的查询示例
假设副本表中关联视频主表的外键字段名为copVideoID,如果你的表中该字段命名不同,替换为实际字段名即可,修正后的SQL语句如下:
SELECT video.vidTitle, video.vidCertificationID, copy.copCurrentlyHired FROM video INNER JOIN copy ON video.vidVideoID = copy.copVideoID WHERE copy.copCurrentlyHired = 0;
原问题附带的操作截图

内容的提问来源于stack exchange,提问作者poop
相关产品推荐
相关产品推荐

