sql - 将一列与两个表连接起来

标签 sql oracle

是否可以通过连接另一个表中的列数据来更新一个表列数据?让我用简单的例子来解释,

表 A:学生访问

╔════════╦══════════╗
║ UserID ║ AccCode  ║
╠════════╬══════════╣
║    12  ║ Tom      ║
║    13  ║ Ann      ║
╚════════╩══════════╝

表 B:学生详细信息
╔════════╦═══════════════════╗
║ ID     ║ UserName          ║
╠════════╬═══════════════════╣
║    1   ║ raj_12_kumar      ║
║    2   ║ test_13_test      ║
╚════════╩═══════════════════╝

现在我想拆分 UserName列数据并从中获取第二个标记并查询 studentaccess表通过匹配 UserID并获得 AccCode值并将其与 UserName 的第二个标记连接起来列数据。最后我需要studentdetails表格数据如下所示,
╔════════╦═══════════════════╗
║ ID     ║ UserName          ║
╠════════╬═══════════════════╣
║    1   ║ 12_Tom            ║
║    2   ║ 13_Ann            ║
╚════════╩═══════════════════╝

从下面的 substr 查询中,我可以得到 UserId来自 UserName 的值studentdetails中的列 table ,
select regexp_substr(UserName, '([^_]+)(_[^_]+){1}$', 1, 1, null, 1) as userId  from studentdetails

任何人都可以帮助我将相同的内容与 Acccode 连接起来并在 UserName 中更新相同内容柱子?

最佳答案

UPDATE StudentDetails sd
SET UserName = 
( 
    SELECT userid||'_'||AccCode 
    FROM StudentAccess sa 
    WHERE regexp_substr(sd.UserName, '([^_]+)(_[^_]+){1}$', 1, 1, null, 1) = sa.userid
);

关于sql - 将一列与两个表连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43014714/

相关文章:

sql - SQL中WHERE子句下的 'colon'是什么意思?

java - 使用 JDBC 运行 Drop Tablespace 命令时,操作系统中的数据文件未删除

mysql - 为什么企业要花大价钱购买甲骨文?

sql - 根据相似的配对值对行进行分组

sql - 存储视频文件的 SQL 中的 BLOB

java - 为带注释的 MyBatis 插入指定类型处理程序

mysql - 插入重复的 MySQL 测试数据的简单方法?

sql - MySQL 中的递归存储函数

sql - 数百个别名/同义词与数据库表的完全限定名称

MySQL自动增量加上一列中的字母数字