MySQL别名IF语句

时间:2013-12-27 02:07:34

标签: mysql

如何查询

之类的内容
if parent = 0 then alias is network_id else alias is group_id

这只能用于查询吗?

2 个答案:

答案 0 :(得分:0)

您可以使用CASE声明。

select 
 ( case when parent=0 then network_id else group_id end ) as 'xyz_id'

示例:

mysql> select date1,
        case when date1='2013-11-26'
                  then date_format(date1, '%d %M %Y')
             when date1='2013-11-27'
                  then 'new date literal'
             else date1
        end as 'dt' 
       from dates;
+------------+------------------+
| date1      | dt               |
+------------+------------------+
| 2013-11-26 | 26 November 2013 |
| 2013-11-27 | new date literal |
| 2013-11-29 | 2013-11-29       |
| 2013-11-30 | 2013-11-30       |
| 2013-12-01 | 2013-12-01       |
+------------+------------------+
5 rows in set (0.06 sec)

答案 1 :(得分:0)

由于您不能随意重命名结果列,因为所有结果必须具有相同的列名,最接近的是:

SELECT IF(parent = 0, id, NULL) AS network_id,
  IF(parent != 0, id, NULL) AS group_id
  FROM ...

这只会填充network_idgroup_id中的一个,具体取决于您的逻辑。但是,两列必须存在于所有行中,因为列对于整个结果集是通用的。