mysql - 连接两个 Substring_index

标签 mysql select join substring

我需要连接下面选择子字符串的 2 个结果。有什么想法吗?

BEGIN
select SUBSTRING_INDEX(SUBSTRING_INDEX(oldVal, '-', n.n), '-', -1) AS oldVal5
FROM audits oldVal
CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n 
FROM (SELECT 0 AS N 
      UNION ALL SELECT 1 
      UNION ALL SELECT 2 
      UNION ALL SELECT 3 
      UNION ALL SELECT 4      
      UNION ALL SELECT 5 
      UNION ALL SELECT 6 
      UNION ALL SELECT 7 
      UNION ALL SELECT 8 
      UNION ALL SELECT 9) a ,
   (SELECT 0 AS N 
      UNION ALL SELECT 1 
      UNION ALL SELECT 2 
      UNION ALL SELECT 3 
      UNION ALL SELECT 4 
      UNION ALL SELECT 5 
      UNION ALL SELECT 6 
      UNION ALL SELECT 7 
      UNION ALL SELECT 8 
      UNION ALL SELECT 9) b ORDER BY n ) n 
WHERE n.n <= 1 + (LENGTH(oldVal) - LENGTH(REPLACE(oldVal, '-', ''))) and 
dbUser=34 and tableName='persona' and task='u';

select SUBSTRING_INDEX(SUBSTRING_INDEX(newVal, '-', n.n), '-', -1) AS newval5 
FROM audits newVal
CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n 
FROM (SELECT 0 AS N 
UNION ALL SELECT 1 
UNION ALL SELECT 2 
UNION ALL SELECT 3 
UNION ALL SELECT 4 
UNION ALL SELECT 5 
UNION ALL SELECT 6 
UNION ALL SELECT 7 
UNION ALL SELECT 8 
UNION ALL SELECT 9) a ,
(SELECT 0 AS N 
UNION ALL SELECT 1 
UNION ALL SELECT 2 
UNION ALL SELECT 3 
UNION ALL SELECT 4 
UNION ALL SELECT 5 
UNION ALL SELECT 6 
UNION ALL SELECT 7 
UNION ALL SELECT 8 
UNION ALL SELECT 9) b ORDER BY n ) n 
WHERE n.n <= 1 + (LENGTH(newVal) - LENGTH(REPLACE(newVal, '-', ''))) and 
dbUser=34 and tableName='persona' and task='u';

END

最佳答案

只需在同一查询中选择两者即可。

select SUBSTRING_INDEX(SUBSTRING_INDEX(oldVal, '-', n.n), '-', -1) AS oldVal5,
       SUBSTRING_INDEX(SUBSTRING_INDEX(newVal, '-', n.n), '-', -1) AS newVal5
FROM audits oldVal
CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n 
FROM (SELECT 0 AS N 
      UNION ALL SELECT 1 
      UNION ALL SELECT 2 
      UNION ALL SELECT 3 
      UNION ALL SELECT 4      
      UNION ALL SELECT 5 
      UNION ALL SELECT 6 
      UNION ALL SELECT 7 
      UNION ALL SELECT 8 
      UNION ALL SELECT 9) a ,
   (SELECT 0 AS N 
      UNION ALL SELECT 1 
      UNION ALL SELECT 2 
      UNION ALL SELECT 3 
      UNION ALL SELECT 4 
      UNION ALL SELECT 5 
      UNION ALL SELECT 6 
      UNION ALL SELECT 7 
      UNION ALL SELECT 8 
      UNION ALL SELECT 9) b ORDER BY n ) n 
WHERE (n.n <= 1 + (LENGTH(oldVal) - LENGTH(REPLACE(oldVal, '-', ''))) 
        or
       n.n <= 1 + (LENGTH(newVal) - LENGTH(REPLACE(newVal, '-', ''))))
    and dbUser=34 and tableName='persona' and task='u';

关于mysql - 连接两个 Substring_index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761739/

相关文章:

mysql - 如何在单个查询中获取一列的值并更新另一列?

java - 远程连接到 MySQL 服务器

php - 使用 if 语句显示表中的记录

php - 使用数组从 mysql 表中选择

mysql - 选择并计算结果在其他地方的位置

mongodb - MongoDB : how to use refs to documents in other collections 中缺少类似连接查询的数据库设计

MySQL:连接后计算重复项而不进行过滤/分组

mysql - 如何连接mysql复选框表A和另一个表B中的复选框结果字段?

mysql - 重置root用户密码后无法在CentOS 7上重启MySQL

java - 使用 Play Framework 和 JPA 连接两个表