我正在执行此查询。
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。
我哪里错了?需要帮助。
答案 0 :(得分:0)
你有无符号整数值,你正在做减法,MySQL将结果绑定到无符号整数......值溢出(下溢)下限,并“换行”。
要解决此问题,请在减法之前将无符号值CAST或CONVERT转换为signed。
SELECT CAST(( val1 ) AS SIGNED) - CAST(( val2 ) AS SIGNED) AS foo
(用您的子查询替换val1
和val2
,返回无符号整数值)
如果您愿意,可以使用CONVERT功能代替CAST
SELECT CONVERT(( val1 ),SIGNED) - CONVERT(( val2 ),SIGNED) AS foo