M@rtinMedlem sedan dec. 19992 085 inlägg Har mysql gjort någon stor förändring vad gäller användarvariabler från version 4.1 till version 5?
SELECT @score,title FROM msgs WHERE (@score:=( IF(title LIKE '%test%',5,0)+ IF(title LIKE '%forum%',5,0)))>0 ORDER BY @score DESC;
Denna fungerar utmärkt lokalt på datorn med mysql 5.0 installerat, men fungerar inte på mitt webhotell som kör 4.1. På webbhotellet fungerar det dels inte att selecta @score men det är inte helt nödvändigt, men när den tilldelar @score ett värde verkar den få värdet av enbart IF nummer 2, den första ignoreras.
Någon som har en idé om vad det kan vara för fel? Jag är jätteförvirrad.
LarsGMedlem sedan dec. 200012 464 inlägg SELECT title,score from
(select title ,
case when title like '%test%' then 5 else 0 end +
case when title like '%forum%' then 5 else 0 end as score
FROM msgs ) as dt
where score > 0
ORDER BY score DESC
M@rtinMedlem sedan dec. 19992 085 inlägg Funkade klocka! Tack så mycket för det snabba svaret!
Finns det någon anledning till att köra den basic-liknande typen av if-sats istället för den jag använde? Testade båda och de verkar inte göra någon skillnad.
M@rtinMedlem sedan dec. 19992 085 inlägg IF(title LIKE '%forum%',5,0)
vs.
case when title like '%forum%' then 5 else 0 end
LarsGMedlem sedan dec. 200012 464 inlägg Jaha, if som du använder den är en funktion, inte en sats. Det var därför jag blev förbryllad. case är standard SQL men inte if. Allt som du kan uttrycka med if går också att uttrycka med case.
M@rtinMedlem sedan dec. 19992 085 inlägg Ah okej, då ska jag börja köra case istället.