【问题标题】:How to filter the left join in sqlsql中如何过滤左连接
【发布时间】:2017-03-10 20:28:36
【问题描述】:

这是代码:

SELECT c.ChapterNo, c.Title, l.LessonNo, l.Title 
FROM Chapter c 
LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo

但我想按章节描述 A 过滤章节表。我已经使用过这个:

SELECT c.ChapterNo, c.Title, l.LessonNo, l.Title 
FROM Chapter c 
LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo 
WHERE c.Desc = 'geometry'

还有这个

SELECT c.ChapterNo, c.Title, l.LessonNo, l.Title 
FROM Chapter c 
LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo AND c.Desc = 'geometry'

但它不起作用。不知道为什么……

【问题讨论】:

  • 第二个查询看起来不错。 不起作用是什么意思?添加示例数据、您当前的结果和预期结果
  • 跑步时什么都没有显示。我想通过几何过滤第一个表作为描述。我只想返回以几何为描述的章节编号

标签: sql vb.net filter


【解决方案1】:

它不起作用,因为您需要将条件放在where 子句中:

SELECT c.ChapterNo, c.Title, l.LessonNo, l.Title
FROM Chapter c LEFT JOIN
     Lesson l
     ON c.ChapterNo = l.ChapterNo 
WHERE c.Desc = 'geometry';

left join 的规则很简单:无论WHERE 子句的计算结果是否为真,都保留第一个表中的所有行。因此,第一个表上的过滤器不会减少行数。

【讨论】:

  • 这是什么意思?我不应该使用左连接吗?
  • @ABCDE 。 . .如果您希望c 中的值在l 中没有匹配的行,则应使用left join
  • @ABCDE 。 . .你有没有运行这个查询?它会执行您想要的过滤。
  • “几何”是实际值还是像“几何原理”这样的较长值的一部分?如果是,则必须使用 LIKE 运算符
猜你喜欢
  • 2021-12-25
  • 1970-01-01
  • 2017-07-06
  • 2011-06-05
  • 2011-02-01
  • 2013-01-19
  • 2022-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多