MySQL CASE声明问题

时间:2013-06-19 23:27:25

标签: mysql sql

我尝试从图像表中检索有效的团队图像。应该只有一个团队图像得到验证。当收到的第一个图像也被验证时,下面的case语句很有效,但是如果第一个图像无效并且第二个接收到的是有效的...我得到一个NULL字符串

CASE
    WHEN taskcode = 0 AND validated = 1
    THEN imgRenamed
    ELSE NULL
    END AS teamImg

以另一种方式总结。

  1. 收到并验证了一个团队形象(上述工作正常)
  2. 收到一个团队图片,无效(上述工作正常)
  3. 与#2相同,但接收并验证了第二张图像(上面返回NULL)
  4. 我还应该注意,这两个图像的任务代码都是0,只是一个被标记为无效而第二个被标记为有效。

    这是否有足够的信息可以帮助我了解案例#3中出了什么问题?

    感谢

1 个答案:

答案 0 :(得分:1)

您需要将其包含在聚合中,例如:

select max(CASE WHEN taskcode = 0 AND validated = 1
                THEN imgRenamed
                ELSE NULL
           END) AS teamImg
from . . .
group by teamId

如果没有聚合,MySQL通常会从条件的一行中选择任意值。换句话说,条件不会应用于所有行,只适用于其中一行。