将别名设置为数据库表的字段中的值

时间:2013-04-29 07:32:14

标签: mysql sql database select

如果我有一个类似于这样的MySQL表:

| NAME | STATUS | DESIGNATION |
-------------------------------
| ABCD |      0 |          MD |
| DCFG |      1 |         CEO |
| AHSG |      1 |          DD |

是否可以运行MySQL查询以获得如下输出:

| NAME | STATUS |             DESIGNATION |
-------------------------------------------
| ABCD |     No |       Managing Director |
| DCFG |    YES | Chief Executive Officer |
| AHSG |    YES |         Deputy Director |

2 个答案:

答案 0 :(得分:5)

您可以使用CASE语句:

SELECT Name
      ,CASE Status 
       WHEN 0 THEN 'No' 
       WHEN 1 THEN 'YES' 
       END AS Status 
      ,CASE Designation 
       WHEN 'MD' THEN 'Managing Director' 
       WHEN 'CEO' THEN 'Chief Executive Officer' 
       WHEN 'DD' THEN 'Deputy Director' 
       END AS Designation  
FROM MyTable;

如果您只有两个条件,那么只需使用ELSE而不是第二个条件:

SELECT Name
      ,CASE Status 
       WHEN 0 THEN 'No' 
       ELSE 'YES'    <--- I mean use this instead of WHEN 1 THEN 'YES'
       END AS Status 
      ,CASE Designation 
       WHEN 'MD' THEN 'Managing Director' 
       WHEN 'CEO' THEN 'Chief Executive Officer' 
       WHEN 'DD' THEN 'Deputy Director' 
       END AS Designation 
FROM MyTable;

结果:

| NAME | STATUS |             DESIGNATION |
-------------------------------------------
| ABCD |     No |       Managing Director |
| DCFG |    YES | Chief Executive Officer |
| AHSG |    YES |         Deputy Director |

See this SQLFiddle

答案 1 :(得分:4)

尝试此查询

SELECT Emplyee, if (status = 0, 'No', 'Yes') AS 'Status' from table

EDITED

SELECT 
   Emplyee, 
   if (status = 0, 'No', 'Yes') AS 'Status',
   CASE Designation 
      WHEN 'MD' THEN 'Managing Director' 
     WHEN 'CEO' THEN 'Chief Executive Officer' 
     WHEN 'DD' THEN 'Deputy Director' 
   END AS Designation 
FROM
   table

希望这会有所帮助..