我有一个包含几个字段的表格。第一个字段是userId
。我正在使用哈希函数通过userId对数据进行分片。
我正在运行以下查询:
SELECT userId, HASH(userId) as hashedId, HASH(userId) % 3 as hashedIdMod3
FROM mydataset.mytable LIMIT 1000
例如:
-5655326518438853587 % 3 ==> -1 when it should be 2
HASH(27315207816077732041734307321022553299) is -3139846784539570547 and the remainder is -2 when divided by 3 when it should be 1
那么,当除以正整数时,余数怎么能为负?
答案 0 :(得分:1)
负数的mod在SQL(和c ++,java等)中是否定的。因此,您需要使用ABS()
- 如:
SELECT userId,
HASH(userId) as hashedId,
ABS(HASH(userId) % 3) as hashedIdMod3
FROM mydataset.mytable LIMIT 1000