虽然我对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
谢谢!
答案 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