【发布时间】:2017-08-17 23:29:37
【问题描述】:
想象一个事务表..
CREATE TABLE `transaction` (
`id` INT NOT NULL AUTO_INCREMENT,
`type` ENUM('buy','sell') NOT NULL,
`amount` DECIMAL(10,2) UNSIGNED NOT NULL,
`currency` ENUM('eur','usd') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
现在,如果我需要汇总所有条目并返回一个总数,我会执行以下操作
SELECT SUM(
CASE
WHEN `type` = 'buy' THEN `amount` ELSE -`amount`
END) AS `total`,
`currency`
FROM `transaction`
GROUP BY `currency`;
现在想象一个SIGNED amount。
SELECT SUM(`amount`) AS `total` FROM `transaction` GROUP BY `currency`;
看起来更简单,对吧?但不知何故,我觉得我遗漏了一些东西,以后事情可能会变得复杂,特别是如果我以后需要用 PHP 处理数据时。
我非常感谢任何使用有符号和无符号数字的 cmet 利弊。
【问题讨论】:
-
@mkaatman 这个问题在那边不太合适,请参阅What is the problem with "Pros and Cons"?。请不要推荐您不熟悉的网站(甚至网站名称错误)
-
稍微改写一下这个问题就可以接受了。感谢您的建议。
-
@mkaatman 基本上我想知道,如果我错过了可能使这个或那个模式变得复杂的一点。我应该删除“利弊”这句话吗?