我应该显示没有被分配班次的司机。我通过驱动程序编号的主键加入了表格。这是我的代码。
select distinct dr_drvname
from driver,shift
where dr_drvnum <> sh_drvnum;
我在代码中使驱动程序编号不相同,以显示不合格的驱动程序编号,但此代码显示所有驱动程序。
答案 0 :(得分:3)
猜测你的桌子结构,我怀疑你想要像
这样的东西select d.dr_drvname
from driver d
where not exists( select 1
from shift s
where d.dr_drvnum = s.sh_drvnum );
答案 1 :(得分:1)
与贾斯汀的答案相反,这是一个使用连接的版本:
SELECT d.dr_drvname
FROM driver d
LEFT JOIN shift s
ON s.sh_drvnum = d.dr_drvnum
WHERE s.sh_drvnum IS NULL
通常,最好总是显式指定连接,而不是使用隐式连接语法(逗号分隔的FROM
子句)。
(但为什么你在前面添加了一个-short-表前缀:'dr_'
?在初始表中包含?当你看起来有一个稍长的前缀时:'drv'
?)