我有一个博客。我写了简单的投票系统。我的想法可能是错的。我有一张这样的桌子
id标题文章TotalVotes VoteSum
如果有人投了反对票,那么当有人投了反对票,TotelVotes就得一分,VoteSum cloumn就得一分
当我展示文章的投票时

<?php
$Vote = $ROW['TotelVotes']-$ROW['VoteSum'];
?>

它工作得很好,但是在我的首页上我想展示一些热门文章,所以我做了这个mysql查询
SELECT TotalVotes-VoteSum AS diff FROM `articles` ORDER BY `diff`  DESC

当我这样做的时候,我会收到18446744073709551615这样的数字,例如当总票数小于VoteSum时
数据类型为INT UNSIGNED
我做错什么了?你能帮帮我吗?谢谢。

最佳答案

您可以使用IF

SELECT IF(TotalVotes >= VoteSum, TotalVotes-VoteSum, VoteSum-TotalVotes) AS diff
FROM `articles`
ORDER BY `diff`  DESC

更新
如果您想得到负值,请将这些列设为INT SIGNED,这样您就可以得到负值。直接运行自己的查询,
SELECT TotalVotes-VoteSum AS diff
FROM `articles`
ORDER BY `diff`  DESC

SQLFiddle Demo (SIGNED INTEGER)

07-24 17:07