Mysql 从ResultSet中删除空值
我正在使用MySQL 我已经使用select with JOIN等生成了以下结果集,但是如果可能的话,我希望删除空值并生成类似于第二个表的结果Mysql 从ResultSet中删除空值,mysql,sql,null,Mysql,Sql,Null,我正在使用MySQL 我已经使用select with JOIN等生成了以下结果集,但是如果可能的话,我希望删除空值并生成类似于第二个表的结果 ----------------------------------- |#|IMG_KEY|IMAGE|XX_STYLE|YY_STYLE| ----------------------------------- |1| 1 |PIX01| <NULL> | STYLEB | |2| 1 |PIX01| STYLEA | &
-----------------------------------
|#|IMG_KEY|IMAGE|XX_STYLE|YY_STYLE|
-----------------------------------
|1| 1 |PIX01| <NULL> | STYLEB |
|2| 1 |PIX01| STYLEA | <NULL> |
|3| 2 |PIX02| <NULL> | STYLEB |
|4| 2 |PIX02| STYLEA | <NULL> |
|5| 3 |PIX03| <NULL> | STYLEB |
|6| 3 |PIX03| STYLEA | <NULL> |
-----------------------------------
是否可以使用
groupby
和/或具有
etc关键字的组合来执行此操作。我尝试了合并
,但没有成功。尝试使用GROUP\u CONCAT()
:
结果:
| ID | IMG_KEY | IMAGE | XX_STYLE | YY_STYLE |
----------------------------------------------
| 1 | 1 | PIX01 | STYLEA | STYLEB |
| 3 | 2 | PIX02 | STYLEA | STYLEB |
| 5 | 3 | PIX03 | STYLEA | STYLEB |
| ID | IMG_KEY | IMAGE | XX_STYLE | YY_STYLE |
----------------------------------------------
| 1 | 1 | PIX01 | STYLEA | STYLEB |
| 2 | 2 | PIX02 | STYLEA | STYLEB |
| 3 | 3 | PIX03 | STYLEA | STYLEB |
要获取从1开始的行号,请尝试以下操作:
SELECT @Row:=@Row+1 AS ID, IMG_KEY, IMAGE
,GROUP_CONCAT(XX_STYLE) XX_STYLE
,GROUP_CONCAT(YY_STYLE) YY_STYLE
FROM MyTable
, (SELECT @Row:=0) r
GROUP BY IMG_KEY, IMAGE
结果:
| ID | IMG_KEY | IMAGE | XX_STYLE | YY_STYLE |
----------------------------------------------
| 1 | 1 | PIX01 | STYLEA | STYLEB |
| 3 | 2 | PIX02 | STYLEA | STYLEB |
| 5 | 3 | PIX03 | STYLEA | STYLEB |
| ID | IMG_KEY | IMAGE | XX_STYLE | YY_STYLE |
----------------------------------------------
| 1 | 1 | PIX01 | STYLEA | STYLEB |
| 2 | 2 | PIX02 | STYLEA | STYLEB |
| 3 | 3 | PIX03 | STYLEA | STYLEB |
请参见使用
group_concat(xx_style,yy_style)
尝试验证空值。由于这些空值,将来可能会出现错误。使用查询本身删除这些“空”值。为此,请在查询中添加以下行
where XX_STYLE is not null and YY_STYLE is not null
如果您提供您的查询,然后我会给你完整的查询好的,它会帮助你显示查询。xx_样式和yy_样式的数据类型是什么?你在使用什么服务器?
xx_样式
&yy_样式
是计算列,如果你不显示任何查询,则没有任何意义。xx_样式和yy_样式的数据类型是字符串。我没有包括实际的数据查询,因为我希望不改变它,如果可能的话,并通过使用我提供的关键字来实现我的目标。hims056提供的答案很有效,非常感谢。然而,还有一个问题,如果列或列组中的所有值都为NULL,那么组_CONCAT()是否返回NULL?很抱歉,我在上次回复中包含了这篇文章,但我按错了键,它丢失了。我是新手,这是我在这个论坛上的第一个问题。@user2655360-是的。如果列或列组中的所有值都是NULL
,它将返回NULL
。请参阅。如果将group by与or子句一起使用,则这对结果不起作用。例如,从mytable
中选择thingOne,其中category='Cat1'或category2='Cat1',thingOne不是空的,按柱面分组;