标题可能有点令人困惑,让我解释一下,;)
我有3张桌子:
[names]n_ID;name1;Jeff2;Adam[books]b_ID;Title1;Book12;Book2[read]n_ID;b_ID
表[read]是一本包含阅读书籍的表格.
如果Adam读“Book1”,[read]中的项目如下所示:
2;1
到现在为止还挺好.
现在,有没有办法知道一个人没有读过哪些书?
我们知道只有亚当读了一本书“Book1”,所以查询应输出如下内容:
n_ID;name;b_ID;Title1;Jeff;1;Book11;Jeff;2;Book22;Adam;2;Book2
是可以在1个查询中执行此 *** 作还是需要一些脚本?最佳答案您可以使用CROSS JOIN
获取名称和书籍的所有可能组合,然后使用带有IS NulL的@L_404_1@读取删除存在的行.
对于没有行存在的所有连接列,left JOIN返回NulL,因此检查r.n_ID IS NulL是否删除了连接实际在read中找到行的那些行.
SELECT n.n_ID,n.name,b.b_ID,b.TitleFROM names nCROSS JOIN books bleft JOIN read r ON ( r.n_ID = n.n_ID AND r.b_ID = b.b_ID )WHERE r.n_ID IS NulL
总结 以上是内存溢出为你收集整理的sql – 如何列出不存在的项目?全部内容,希望文章能够帮你解决sql – 如何列出不存在的项目?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)