有INNER JOIN限制吗?

dee*_*ell 0 mysql sql join

使用INNER JOIN是有限制的吗?

原始查询(工作得很好)我受到了77行的影响

    SELECT atendimento.id, atendimento.responsavel, atendimento.ocorrencia, 
           atendimento.idcontrato, cliente.nome as clinome, cliente.id as cliid, 
           atendimento.d_ini, usuario.apelido, tipos.descricao, tipos.id as tip 
      FROM atendimento 
INNER JOIN cliente ON atendimento.cliente=cliente.id 
INNER JOIN usuario ON atendimento.usuario=usuario.id 
INNER JOIN tipos ON atendimento.status=tipos.id 
     WHERE 1=1 AND (atendimento.status=10 OR atendimento.status=11) 
  ORDER BY tipos.id, atendimento.d_ini ASC
Run Code Online (Sandbox Code Playgroud)

新尝试:(不能很好地工作)它仅限于受影响的17行.除了我的查询中返回的只有17行之外,此处的结果是相同的.

    SELECT atendimento.id, atendimento.responsavel, atendimento.ocorrencia, 
           atendimento.idcontrato, atend_os.protocolo, atend_os.tecnico, 
           cliente.nome as clinome, cliente.id as cliid, atendimento.d_ini, 
           usuario.apelido, tipos.descricao, tipos.id as tip 
      FROM atendimento 
INNER JOIN atend_os ON atendimento.id=atend_os.protocolo 
INNER JOIN cliente ON atendimento.cliente=cliente.id 
INNER JOIN usuario ON atendimento.usuario=usuario.id 
INNER JOIN tipos ON atendimento.status=tipos.id 
     WHERE 1=1 AND (atendimento.status=10 OR atendimento.status=11) 
  ORDER BY tipos.id, atendimento.d_ini ASC
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?有人知道结果改变的原因吗?

非常感谢任何信息!

Pow*_*ord 6

两个查询之间的区别在于新查询atend_os也在访问表.因此,当过滤掉时,其中任何值atendimento.cliente都不存在cliente.id.

一个INNER JOIN要求的值在两个表中存在,或该行被丢弃.