MySQL别名IF语句

MySQL别名IF语句,mysql,Mysql,您如何查询类似的内容 if parent = 0 then alias is network_id else alias is group_id 只有查询才能这样做吗?您可以使用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'

您如何查询类似的内容

if parent = 0 then alias is network_id else alias is group_id

只有查询才能这样做吗?

您可以使用
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)

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

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

这将仅填充
网络id
组id
中的一个,具体取决于您的逻辑。但是,所有行中都必须有这两列,因为这两列对于整个结果集都是通用的。

如果我希望别名不同,而不是实际数据,该怎么办。@madziikoy在那里使用了一个文字。但是如何设置文字?对不起,但是我想根据一个条件显示一个不同的列别名,你不能有一个结果列被重命名为两个不同的东西。结果是显示网络id或组id,一旦在PHP端将其作为数组,您就可以做任何您想做的事情。MySQL使用的是一种严格的结果格式,不能像这样独立操作。