Hy大家, 长时间读者,第一次海报。
这听起来应该很简单,但我无法在任何地方找到解决方案。我正在建立一个评级系统,人们可以评估某些东西是否活跃。它有自己的逻辑,但我需要它。
我可以使用两个SQL语句在PHP中对其进行硬编码,但我确信使用单个存储过程(一个用于投票,另一个用于投票)会更快。
示例表:
item_id | item_rating
---------------------
10 | 1
投票item_rating的逻辑:
if | then
---------
0 | 1
1 | 2
-1 | 1
-2 | 1
2 | 2
将item_rating投票的逻辑:
if | then
---------
0 | -1
1 | -1
-1 | -2
-2 | -2
2 | -1
我知道一个简单的基于点的系统会更容易,但由于系统的性质,这是我能找到的最简单的解决方案。
有人可以解释我如何在SQL中使用IF语句来实现这一目标吗?我确信答案对于知情人士来说非常明显。
(顺便说一句,使用最新版本的MySQL)
答案 0 :(得分:3)
这是你要找的吗?这是一个upvote:
UPDATE rating
SET item_rating = IF(item_rating < 1, 1, 2);
这是一个downvote:
UPDATE rating
SET item_rating = IF(item_rating > -1, -1, -2);
答案 1 :(得分:0)
这是未经测试的,但我认为它应该有用。
update items i
set item_rating = (select i.item_rating + `then` from item_rating
where `if` = i.item_rating)
where i.item_id = 10