Mysql 是否可以将<;如果>;选择查询中的条件
我有一个名为categories的表,如上所示 对于某些T2值,T3可以为空,也可以有值。 我得到一个如下所示的查询Mysql 是否可以将<;如果>;选择查询中的条件,mysql,Mysql,我有一个名为categories的表,如上所示 对于某些T2值,T3可以为空,也可以有值。 我得到一个如下所示的查询 mysql> select * from categories ; +-------------+--------------------+-----------------+--------------------- | category_id | T1 | T2 | T3 +-------------+-----
mysql> select * from categories ;
+-------------+--------------------+-----------------+---------------------
| category_id | T1 | T2 | T3
+-------------+--------------------+-----------------+---------------------
| 2 | Popcorn | Bucket | NULL
| 3 | Popcorn | Jumbo | NULL
| 3 | Popcorn | Jumbo | NULL
6 | Popcorn | Combo Relish | NULL |
7 | Soft Drinks | Fountain | Apple |
7 | Soft Drinks | Fountain | Apple |
8 | Soft Drinks | Fountain | Orange |
8 | Soft Drinks | Bottled | Orange |
有了这个,结果看起来像这样
select t1, t2,
group_concat(concat(t3,'(',category_id,')')) consildated_Data
from categories
group by 1,2;
我的问题是,如果T3为null
,是否可以将值打印为空,并带有相应的类别id
编号
所以水桶看起来像这样
Popcorn | Bucket | NULL
Popcorn | Combo Relish | NULL
Popcorn | Jumbo | NULL
Soft Drinks | Fountain | Apple(7),Apple(7),Orange(8)
Soft Drinks | Bottled | Orange(8)
是否有可能在上述查询下设置if条件???是的,firebird上有案例
在不进行测试的情况下,您可以使用这样的:
Popcorn | Bucket | empty(2)
Popcorn | Jumbo | empty(3),empty(3)
在mysql中使用ifnull(x,[defalt_value])
SELECT
t1,
t2,
IF(
t3 IS NULL, -- condition
CONCAT('empty(', category_id, ')'), -- true reaction
GROUP_CONCAT(CONCAT(t3,'(',category_id,')')) -- false reaction
) AS consildated_Data
FROM categories
GROUP BY 1, 2;
或者您也可以使用案例陈述
,但使用更丑陋的方法:
select t1, t2,
group_concat(concat(ifnull(t3, ''),'(',category_id,')')) consildated_Data
from categories
group by 1,2;
@VigneshKumar你错了:@scrowler很抱歉这么说..我现在才知道+1@fish_ball那些空引号里面应该有“empty”吗?@scrowler你说的那些空引号是什么意思?
ifnull(t3',)
->ifnull(t3',empty')
:为了满足OP的要求,用empty(n)
代替Apple(n)
例如,为什么字段t3
不按分组,但可以在分组函数之外使用?@fish\u ball MySQL将允许“中断”使用未分组的字段,但如果爆米花|巨型| null
行中的一行更改为爆米花|巨型|橙色
,此查询将不会给出正确的结果。
select t1, t2,
group_concat(concat(case t3 when null then '' else t3 end)),'(',category_id,')')) consildated_Data
from categories
group by 1,2;