【问题标题】:Difference between two columns in mysqlmysql中两列之间的区别
【发布时间】: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 值

标签: mysql sql phpmyadmin


【解决方案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);

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 2020-05-04
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多