Case语句包含多个列,每个列都有一个特定的名称

时间:2015-07-14 18:59:47

标签: mysql

可能有一种更简单的方法可以做到这一点但是现在我正在使用工会来获得我的结果。在我的查询中,无论驱动程序列如何,我最终都会得到2行数据。 如果驱动程序列为null,则所需的结果是从结果中排除该行,但如果它不为null,则需要包含该行。

如果两行都为空,则最多2行,没有行。

这可能吗?

查询:

选择     ROUND(CASE             当_235不为空那么'0'ELSE''             结束,5)AS mi_factor1,     ROUND(CASE             当_235不为空那么'0'ELSE''             结束,5)AS mi_factor2 来自myDataBase

UNION

选择     ROUND(CASE             当_230不为空那么'0'ELSE''           结束,5)AS mi_factor1,     ROUND(CASE             当_230不为空那么'0'ELSE''           结束,5)AS mi_factor2 来自los.e

3 个答案:

答案 0 :(得分:0)

如果您希望排除那么最好有一个where子句,其中包含不包含的标准

由于您使用的是UNION,它会将两个查询的结果集放在一起用于输出

但是你可以尝试下面的结果集使用DISTINCT函数,所以你只有一行

  

SELECT DISTINCT mi_factor1,mi_factor2 FROM(

     

SELECT ROUND(当_235不为空时的情况,那么'0'ELSE''结束,5)AS mi_factor1,ROUND(当_235不为空时为'0'ELSE''结束,5)AS mi_factor2 FROM myDataBase < / p>      

UNION

     

SELECT ROUND(当_230不为空时的情况,那么'0'ELSE''结束,5)AS mi_factor1,ROUND(当_230不为空,然后'0'ELSE''结束,5)AS mi_factor2 FROM los。 ë

     

您还可以查看使用GROUP BY

答案 1 :(得分:0)

添加过滤器WHERE myColumn IS NOT NULL。如果您不想过滤掉必须过滤的数据,请不要使用案例陈述。

答案 2 :(得分:0)

我感谢您的所有答案,特别是在信息有限的情况下,但我能够回答我自己的问题(不同的群体并没有对我的查询起作用)。

它只是添加一个额外的&#34;和&#34;排在&#34;其中&#34;子句。

在上面的场景中,我使用了

SELECT column1,column2等... 来自mydb 这就是那个 AND _235不为空

UNION 与上面相同但是AND将是_230是否为空

再一次,我没有提供关键信息,你必须做出很多假设。对于任何有相同问题的人来说,这可能没有任何意义或增加任何价值,但希望至少在某人身上得到一些东西。后来