0

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

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

用另一种方式来概括。

  1. 收到并验证了一张团队图片(以上工作正常)
  2. 收到一张团队图片,无效(以上工作正常)
  3. 与 #2 相同,但接收并验证了第二张图像(以上返回 NULL)

我还应该注意,有问题的两个图像的任务代码都为 0,只是一个将被标记为无效,第二个被标记为有效。

这些信息是否足以让某人帮助我了解第 3 种情况下出了什么问题?

谢谢

4

1 回答 1

1

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

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

如果没有聚合,MySQL 通常会从一行中为条件选择任意值。换句话说,条件并未应用于所有行,仅应用于其中之一。

于 2013-06-19T23:53:00.853 回答