mysql中两列之间的区别

Posted

技术标签:

【中文标题】mysql中两列之间的区别【英文标题】:Difference between two columns in mysql 【发布时间】:2014-09-24 12:28:08 【问题描述】:

我有两列(creditdebited_amount),我想计算它们之间的差异。

只需要检索大于零或debited_amount 字段为空的记录。

如果值为零,请不要介意。

这是我尝试过的 SQL 查询。请帮忙

SELECT
  `p_Id`,
  `user_id`,
  `doc_id`,
  `credit`,
  `app_date`,
  `expires_on`,(credit - debited_amount) AS credit
FROM
  `wp_loyalty_credits`
WHERE
  `expires_on` > now();

【问题讨论】:

所以你可以比较expires_onnow(),但是你不能比较其他2列? 如果 debited_amount 为 null,则 credit 和 debited_amount 的差异显示为 Null。在这种情况下,我需要相同的 credit 值 【参考方案1】:

您只需将逻辑添加到where 子句中:

SELECT `p_Id`,`user_id`,`doc_id`,`credit` ,`app_date`,`expires_on`,
       (credit -debited_amount) AS credit
FROM `wp_loyalty_credits`
WHERE `expires_on`>now() and (credit > debited_amount or debited_amount is null);

您的查询在select 中重新定义了credit。但是,这无关紧要,因为您不能在 where 子句中引用列别名。因此,credit 列就是它使用的列。如果添加表别名会更清楚:

SELECT lc.p_Id, lc.user_id, lc.doc_id, lc.credit, lc.app_date, lc.expires_on,
       (lc.credit - lc.debited_amount) AS credit
FROM `wp_loyalty_credits` lc
WHERE lc.expires_on > now() and
      (lc.credit > lc.debited_amount or lc.debited_amount is null);

【讨论】:

以上是关于mysql中两列之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 MySQL 中两列范围之间的记录?

删除颤振中两列之间的空间

计算Postgresql中两列之间的运行差异

引导程序中两列之间的垂直分隔线

pyspark数据框中两列之间的时间差

获取MySql中两列最大值的行