我该怎么做这个SQLite查询?

时间:2014-06-09 16:06:55

标签: mysql sqlite

虽然我对MySQL有更多的经验,但我对SQLite很新,显然它的IF()语句的语法没有支持,所以我想知道,我怎么能做这个在MySQL中运行良好的查询,但是在SQLite中?

SELECT auth_user.email,
   Sum(IF((brasil2014_partidosfifa.Local = brasil2014_partidosusuarios.Local AND brasil2014_partidosfifa.Visita = brasil2014_partidosusuarios.Visita),2,0) + IF(brasil2014_partidosfifa.Resultado = brasil2014_partidosusuarios.Resultado,1,0)) AS puntos
FROM brasil2014_partidosfifa
INNER JOIN brasil2014_partidosusuarios ON brasil2014_partidosfifa.id = brasil2014_partidosusuarios.id
INNER JOIN auth_user ON brasil2014_partidosusuarios.idUsuario_id = auth_user.id
WHERE auth_user.id LIKE '%' AND brasil2014_partidosfifa.Jugado = 'Si'
GROUP BY auth_user.email
ORDER BY puntos DESC

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试case expression。而不是

Sum(IF((brasil2014_partidosfifa.Local = brasil2014_partidosusuarios.Local AND 
        brasil2014_partidosfifa.Visita = brasil2014_partidosusuarios.Visita),2,0) + 
    IF( brasil2014_partidosfifa.Resultado = brasil2014_partidosusuarios.Resultado,1,0)) 
    AS puntos

使用:

CASE 
    WHEN (  ... your first IF ... ) THEN 2 ELSE 0
END + 
CASE 
    WHEN (  ... your second IF ... ) THEN 1 ELSE 0
END 
AS puntos