创建视图的MySQL复杂嵌套查询

创建视图的MySQL复杂嵌套查询,mysql,view,nested-query,Mysql,View,Nested Query,我想从如下表中创建一个视图: Configuration | Size | Runtime 0 | 10 | 32.5 1 | 10 | 30.8 2 | 10 | 40.1 0 | 20 | 61.0 1 | 20 | 65.3 2 | 2

我想从如下表中创建一个视图:

Configuration |   Size  | Runtime    
0             |    10   |  32.5    
1             |    10   |  30.8   
2             |    10   |  40.1    
0             |    20   |  61.0   
1             |    20   |  65.3   
2             |    20   |  56.8
Configuration |   Size  | Speedup
0             |    10   |  1.0
1             |    10   |  1.05
2             |    10   |  0.81
0             |    20   |  1.0
1             |    20   |  0.93
2             |    20   |  1.07
其中配置号0是特殊的(它是默认配置),并且 存在于每组“大小”值中。 我的目标是创建如下视图:

Configuration |   Size  | Runtime    
0             |    10   |  32.5    
1             |    10   |  30.8   
2             |    10   |  40.1    
0             |    20   |  61.0   
1             |    20   |  65.3   
2             |    20   |  56.8
Configuration |   Size  | Speedup
0             |    10   |  1.0
1             |    10   |  1.05
2             |    10   |  0.81
0             |    20   |  1.0
1             |    20   |  0.93
2             |    20   |  1.07
对于具有相同大小的每组行,我希望找到默认配置(由数字0标识),然后计算所考虑行的运行时与默认运行时之间的比率

这可以分为两个查询:

  • 查找给定“大小”的默认运行时
  • 执行运行时与默认值之间的比率
  • 问题是,在查询1中(应该是查询2的select语句中的子查询),我不知道当前考虑的是哪个“大小”。 我希望你明白我的意思

    我有办法解决这个问题吗

    SELECT Configuration, Size, default.Runtime / t.Runtime AS Speedup FROM t JOIN (
      SELECT Size, Runtime FROM t WHERE Configuration = 0
    ) `default` USING (Size)
    
    在电视上看


    请在上查看。

    您可以使用的另一种方法是子选择:

    CREATE VIEW yourview AS
    SELECT
        Configuration,
        Size,
        (SELECT Runtime
         FROM yourtable AS T2
         WHERE T1.Size = T2.Size
         AND T2.Configuration = 0) / Runtime AS SpeedUp
    FROM yourtable AS T1
    

    在线查看:另一种可以使用的方法是子选择:

    CREATE VIEW yourview AS
    SELECT
        Configuration,
        Size,
        (SELECT Runtime
         FROM yourtable AS T2
         WHERE T1.Size = T2.Size
         AND T2.Configuration = 0) / Runtime AS SpeedUp
    FROM yourtable AS T1
    
    在线查看它的工作情况: