mysql - 如果数据为空,则通过比较所有列来更新列
问题描述
我遇到了一种情况,我想比较为空的列并将数据更新到第一次出现的列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 的机构名称,那么它应该update
在institute_name_2
列上,如果 id 2 的用户想要添加机构,那么它应该更新institute_name_3
解决方案
这是非常糟糕的桌子设计。这是您的表格的建议版本,使用相同的数据:
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 的“第二个”机构。
推荐阅读
- swift - 如何在 Catalyst 应用程序中将搜索栏放入 NSToolbar?
- ruby - 如何在 Ruby 中的标题元素之间进行选择
- sparql - SPARQL 语法更正
- sharepoint - MS Flow SharePoint“授予访问权限”操作因“项目不存在”而失败
- laravel - 向 Laravel 中的所有用户发送每周电子邮件的方法
- java - 如何使用 LatLng 获取起始位置/位置。我确实有一个移动的当前位置/位置
- java - 如何从文本文件中读取单个字符并将它们存储到二维数组中?
- python - 如何显示DataFrame的前N行
- react-native - 未捕获的错误:EXGL:gl.texImage2D() 的像素数据参数无效
- rust - Hello World Rust 程序编译,但执行导致无授权错误