首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有允许空字段的WHERE条件的SQL查询

带有允许空字段的WHERE条件的SQL查询
EN

Stack Overflow用户
提问于 2019-03-19 12:59:37
回答 4查看 80关注 0票数 0

如果标题不太清楚,我很抱歉,坦白地说,我真的不知道如何用简单的词来解释它。我有以下问题。

我有一个疑问:

代码语言:javascript
运行
复制
SELECT EQUIPO.EQUI_SERIE
FROM EQUIPO
     LEFT JOIN ASIGNACION ON EQUIPO.EQUI_SERIE = ASIGNACION.EQUI_SERIE
WHERE ASIG_ACTIVA = 'No'
ORDER BY EQUI_SERIE ASC;

我希望它显示在ASIGNACION表中引用或不引用的设备表中的所有元素,如果它们被引用,我希望它只显示那些在ASIG_ACTIVA列中具有'No‘值的元素。我尝试过不同的东西,但我在网上找不到我需要的东西。任何帮助都将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-19 13:03:05

猜测ASIG_ACTIVA是表中的一个列,而不是EQUIPO (这就是别名很重要的原因)。如果是的话,将WHERE移动到ON

代码语言:javascript
运行
复制
SELECT E.EQUI_SERIE
FROM EQUIPO E
     LEFT JOIN ASIGNACION A ON E.EQUI_SERIE = A.EQUI_SERIE
                           AND A.ASIG_ACTIVA = 'No'
ORDER BY E.EQUI_SERIE ASC;
票数 1
EN

Stack Overflow用户

发布于 2019-03-19 13:02:16

更改联接条件,在联接上添加ASIG_ACTIVA = 'No'

代码语言:javascript
运行
复制
SELECT EQUIPO.EQUI_SERIE
FROM EQUIPO
     LEFT JOIN ASIGNACION ON EQUIPO.EQUI_SERIE = ASIGNACION.EQUI_SERIE
 and ASIG_ACTIVA = 'No'

ORDER BY EQUI_SERIE ASC;
票数 2
EN

Stack Overflow用户

发布于 2019-03-19 13:02:27

您可以通过限制连接表来实现这一点。

代码语言:javascript
运行
复制
SELECT EQUIPO.EQUI_SERIE
FROM EQUIPO
  LEFT JOIN ASIGNACION ON EQUIPO.EQUI_SERIE = ASIGNACION.EQUI_SERIE
                      AND ASIGNACION.ASIG_ACTIVA = 'No'
ORDER BY EQUI_SERIE ASC;

通过将AND添加到联接中,可以将联接表ASIGNACION限制为只有列ASIGN_ACTIVE中有no的行。

这将使ASIGNACION中所有相关的行都具有no值。

因为它是一个左联接,所以对于不是相关的行,或者是以yes为值的行,您也会获得NULL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55241665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档