首页 > 解决方案 > 如果数据为空,则通过比较所有列来更新列

问题描述

我遇到了一种情况,我想比较为空的列并将数据更新到第一次出现的列null ,例如:

 id  institute_name_1  institute_name_2 institute_name_3 institute_name_4 
   1     xyz                  null          null             null            
   2     abc                  pqr           null             null        

现在,如果我想更新添加用户 1 的机构名称,那么它应该updateinstitute_name_2列上,如果 id 2 的用户想要添加机构,那么它应该更新institute_name_3

标签: mysqlnull

解决方案


这是非常糟糕的桌子设计。这是您的表格的建议版本,使用相同的数据:

user_id | institute_name
1       | xyz
2       | abc
2       | pqr

也就是说,将用户和机构之间的每个关系存储在单独的记录中。然后,添加或删除关系直接映射到添加或删除记录。

如果您确实需要跟踪哪个用户/机构条目是第一个、第二个等,那么您可能应该为此设置一个专用列。也许time_inserted日期时间列会有意义:

user_id | institute_name | time_inserted
1       | xyz            | 2018-10-25 12:00:03
2       | abc            | 2018-10-25 13:55:23
2       | pqr            | 2018-10-25 14:02:00

time_inserted现在可以使用提供排序的列来确定用户#2 的“第二个”机构。


推荐阅读