mysql没有得到想要的结果

时间:2015-01-12 05:33:17

标签: mysql

我正在执行此查询。

select (select FollowersCount from webanalysis.DataTwUser_followers_history where DataTwUserID='80943' and Date <='2015-01-12' order by Date desc limit 1) - (select FollowersCount from webanalysis.DataTwUser_followers_history where DataTwUserID='80943' and Date >='2014-12-12' order by Date  limit 1) as new;

它正在给我&#39; 18446744073709551606&#39;这是答案,但我想要&#39; -9&#39;作为答案。

如果我执行查询1

select FollowersCount from webanalysis.DataTwUser_followers_history where DataTwUserID='80943' and Date <='2015-01-12' order by Date desc limit 1;

它会给我&#39; 193&#39;作为答案。如果执行此查询2

select FollowersCount from webanalysis.DataTwUser_followers_history where DataTwUserID='80943' and Date >='2014-12-12' order by Date  limit 1;
它会给我&#39; 202&#39;作为答案,所以我想这样做,

193 - 202 = -9。

我哪里错了?需要帮助。

1 个答案:

答案 0 :(得分:0)

你有无符号整数值,你正在做减法,MySQL将结果绑定到无符号整数......值溢出(下溢)下限,并“换行”。

要解决此问题,请在减法之前将无符号值CAST或CONVERT转换为signed。

SELECT CAST(( val1 ) AS SIGNED) - CAST(( val2 ) AS SIGNED) AS foo

(用您的子查询替换val1val2,返回无符号整数值)

如果您愿意,可以使用CONVERT功能代替CAST

SELECT CONVERT(( val1 ),SIGNED) - CONVERT(( val2 ),SIGNED) AS foo