如果标题不太清楚,我很抱歉,坦白地说,我真的不知道如何用简单的词来解释它。我有以下问题。
我有一个疑问:
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‘值的元素。我尝试过不同的东西,但我在网上找不到我需要的东西。任何帮助都将不胜感激。
发布于 2019-03-19 13:03:05
猜测,ASIG_ACTIVA是表中的一个列,而不是EQUIPO (这就是别名很重要的原因)。如果是的话,将WHERE移动到ON
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;发布于 2019-03-19 13:02:16
更改联接条件,在联接上添加ASIG_ACTIVA = 'No'
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;发布于 2019-03-19 13:02:27
您可以通过限制连接表来实现这一点。
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。
https://stackoverflow.com/questions/55241665
复制相似问题