如何对INNER JOIN生成的结果表执行查询并使用RIGHT函数过滤?
如何查询INNER JOIN结果表并使用RIGHT函数过滤
嘿,我来帮你搞定这两个问题:
一、对INNER JOIN生成的结果表执行查询的方法
内连接(INNER JOIN)生成的结果本质上是一个虚拟的中间表,你完全可以像操作普通物理表一样对它做查询操作,常见的两种实现方式:
- 直接在JOIN语句后追加WHERE条件、ORDER BY、GROUP BY等子句,直接过滤或处理连接后的结果
- 将整个INNER JOIN语句包装成子查询(或者用CTE临时表),给它起一个别名,再基于这个别名表做后续的查询逻辑
二、用RIGHT函数过滤内连接后的表的具体实现
看你给出的SQL语句,其实只需要把注释掉的WHERE子句放到正确位置就行啦。RIGHT函数用来截取字符串右侧的指定长度,这里你要筛选文件名最后6位是SLDDRW的记录,直接在JOIN之后添加WHERE条件即可:
写法一:直接添加WHERE子句(最常用)
SELECT Documents.Filename, VariableValue.ValueText FROM Documents INNER JOIN VariableValue ON Documents.DocumentID = VariableValue.DocumentID WHERE RIGHT(Documents.Filename, 6) = 'SLDDRW';
这里给字段加上表名前缀(Documents.Filename),能避免多表存在同名字段时出现歧义,是个好习惯哦。
写法二:用子查询包装内连接结果(适合复杂场景)
如果后续还要做更复杂的嵌套操作,也可以把内连接的结果作为子查询,再进行过滤:
SELECT sub.Filename, sub.ValueText FROM ( SELECT Documents.Filename, VariableValue.ValueText FROM Documents INNER JOIN VariableValue ON Documents.DocumentID = VariableValue.DocumentID ) AS sub WHERE RIGHT(sub.Filename, 6) = 'SLDDRW';
简单总结:内连接的结果可以直接当作普通表来使用,把过滤条件放在JOIN之后的WHERE子句里,就能精准筛选你要的记录啦~
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

