在mysql中显示列的名称

时间:2015-04-26 09:20:16

标签: mysql select

我的表中有三个日期值,即ActivationDate,RegistrationDate和CreationDate,我希望有一个select来显示值最小的列的名称。

我用过

  

从表名

中选择LEAST(ActivationDate,RegistrationDate,CreationDate)

并返回最小值。但是,我想知道这三个中哪一个是最小值。因此,我的预期结果是具有最短日期的列的名称,该日期可以是激活日期,注册日期或创建日期。

对于您的解决方案,如果其中3个具有相似的值,请说明结果是什么?是全部还是一个?

由于

2 个答案:

答案 0 :(得分:1)

您只需要在条件语句中针对每列测试least值。

假设有以下表格结构

CREATE TABLE `test` (
  `activationdate` datetime DEFAULT NULL,
  `registrationdate` datetime DEFAULT NULL,
  `creationdate` datetime DEFAULT NULL
)

带有这些值

mysql> select * from test;
+---------------------+---------------------+---------------------+
| activationdate      | registrationdate    | creationdate        |
+---------------------+---------------------+---------------------+
| 2015-01-01 00:00:00 | 2015-01-02 00:00:00 | 2015-01-03 00:00:00 |
| 2015-01-30 00:00:00 | 2015-01-15 00:00:00 | 2015-01-12 00:00:00 |
+---------------------+---------------------+---------------------+

您可以使用以下查询来提取最小的值和列名:

 select least(activationdate, registrationdate, creationdate) as value,
        case when least(activationdate, registrationdate, creationdate) = activationdate then 'activationdate' 
             when least(activationdate, registrationdate, creationdate) = registrationdate then 'registrationdate'
             when least(activationdate, registrationdate, creationdate) = creationdate then 'creationdate'
        end as field
   from test;

它会给你这些结果:

+---------------------+----------------+
| value               | field          |
+---------------------+----------------+
| 2015-01-01 00:00:00 | activationdate |
| 2015-01-12 00:00:00 | creationdate   |
+---------------------+----------------+

答案 1 :(得分:0)

我认为你应该获取所有三个最小值:

git config --global core.autocrlf input

之后,通过java / php或您正在使用的任何内容,取最小值