mysql 没有给出想要的结果

标签 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;

它给了我“18446744073709551606”作为答案,但我想要“-9”作为答案。

如果我执行这个查询1

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

它会给我“193”作为答案。如果执行此查询2

select FollowersCount from webanalysis.DataTwUser_followers_history where DataTwUserID='80943' and Date >='2014-12-12' order by Date  limit 1;

它会给我“202”作为答案,所以我想这样做,

193 - 202 = -9。

我哪里错了?需要帮助。

最佳答案

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

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

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

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

如果您愿意,可以使用 CONVERT 函数代替 CAST

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

关于mysql 没有给出想要的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895873/

相关文章:

mysql - 插入数据时如何确保外键作为主键存在于另一个表中?

java - 准备好的语句中残留 'x'

MySQL : How to aggregate table column into a list and count?

mysql - 存储大型 session 级数据集?

mysql - 将 sql 数据库导出到我的 PC 是否安全?

mysql - 选择包含一个词的条目

java - [EBean][PlayFramewrok 2.5] ID 未从数据库加载

php - 仅使用第一个字母获取列中的多个单词

mysql - 新的 MySQL 版本破坏了查询

php - 尝试在 Microsoft Excel 中导出带有中文等特殊字符的 csv 但失败