Mysql 查询将字段设置为其他两个字段中的第一个非空值、非零值



我在MySQL数据库中有一个表schools,它有列number_of_pupilspupil_capacitypupil_numbers_or_capacity(所有整数字段(。

我想根据以下规则设置pupil_numbers_or_capacity字段:

  • 如果number_of_pupils不为 null 且大于零,则使用该值。
  • 否则,如果 pupil_capacity 不为 null 且大于零,请使用该值。
  • 如果以上都不是,请不要更新它。

我可以在单个更新查询中执行此操作吗?

试试这个:

UPDATE schools t
   SET t.pupil_numbers_or_capacity = CASE WHEN number_of_pupils > 0
                                          THEN number_of_pupils
                                          ELSE pupil_capacity END
 WHERE t.number_of_pupils > 0
    OR t.pupil_capacity > 0

最新更新