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使用的是一种严格的结果格式,不能像这样独立操作。