sql - 如何根据不同的表在表中插入行?
问题描述
我有两张桌子。一张user
表包含 user_id、user_email、user_name
,另一user_status
张表包含 user_email、status。
我面临的问题是user_status
表是新添加的,它是空的。该user
表已经在生产中。我想实现一个场景,我可以在status
不清理数据库的情况下在表中添加行。
如果user_name
为空,则表中status
的为else 。user_status
offline
online
user_id user_email user_name
1 xyz@gmail.com xyz
2 abc@gmail.com
如果这是我的user
表并且我的user_status
表是空的,那么我想将user_status
表更新为:
user_email status
xyz@gmail.com active
abc@gmail.com inactive
解决方案
使用insert ...select
和条件表达式:
insert into user_status(user_email, status)
select user_email, case when user_name is null then 'offline' else 'online' end
from users
这假设您所说的“空”是指null
. 如果您真的是指空字符串,则case
应该where user_name = ''
改为使用中的条件。
请注意,这user
是几乎所有数据库中的语言关键字,因此不是列名的好选择。我在查询中将其重命名为users
。
推荐阅读
- android - Logcat 仅捕获应用程序日志,关闭开发人员选项
- python - 为什么调用 next() 时 StratifiedShuffleSplit 返回完整数据集的训练/测试索引?
- schema.org - SDTT 抛出错误,即发布者需要徽标的 url
- python - 浮点精度仍然应该给出正确的结果
- c# - Azure AD 使用用户名/密码从 API 进行身份验证 - 没有 UI,有示例吗?
- gitlab - 您可以使用 Merge to Upstream 作为触发器自动推送到子树(GitLab-CI)吗?
- java - Spring Boot 和无服务器不支持的媒体类型
- c# - WPF - 如何按列标题填充 ListView 的整个空间
- node.js - 使用 Nodejs ExpressJS 后端通过参数查询 MongoDB 数据库时出错——
- c# - SSH.NET 从 ShellStream 检索输出