mysql中两列之间的区别
Posted
技术标签:
【中文标题】mysql中两列之间的区别【英文标题】:Difference between two columns in mysql 【发布时间】:2014-09-24 12:28:08 【问题描述】:我有两列(credit
和 debited_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_on
和now()
,但是你不能比较其他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中两列之间的区别的主要内容,如果未能解决你的问题,请参考以下文章