同时订购两个mysql列

时间:2010-12-10 11:12:27

标签: sql mysql

我有两个日期列domain_renew_datehosting_renew_date。 我试图显示在接下来的x天内需要更新的行。 但是,如果我按一列而不是另一列,则会忽略一些接近当前日期的日期,因为另一列不需要续订。

是否可以比较两列的最大值并使用该值来排序?

这就是我现在所拥有的,但我刚刚发现“最伟大的”并没有做我想做的事情。

"SELECT *
FROM `domains` as Domain
WHERE (`domain_renew_date` < '".$date."' AND `domain_renew_date` != '0000-00-00')
OR (`hosting_renew_date` < '".$date."' AND `hosting_renew_date` != '0000-00-00')
ORDER BY greatest(`domain_renew_date`, `hosting_renew_date`) ASC"

感谢。

2 个答案:

答案 0 :(得分:4)

甚至更简单

SELECT if(domain_renew_date > hosting_renew_date, domain_renew_date, hosting_renew_date) as greater_date
FROM domains
WHERE hosting_renew_date >= '".date."' OR domain_renew_date >= '".$date."' ORDER BY greater_date ASC

答案 1 :(得分:1)

"SELECT if(domain_renew_date <= '".$date."', 'domain_renew_date', 'hosting_renew_date') as greterdate
FROM `domains` as Domain
WHERE (`domain_renew_date` < '".$date."' AND `domain_renew_date` != '0000-00-00')
OR (`hosting_renew_date` < '".$date."' AND `hosting_renew_date` != '0000-00-00')
ORDER BY greterdate ASC"

这可能符合您的要求。

感谢。