【问题标题】:MySQL complex nested query creating a viewMySQL复杂嵌套查询创建视图
【发布时间】:2012-07-08 03:17:12
【问题描述】:

我想从这样的表中创建一个视图:

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

其中配置号 0 是特殊的(它是默认配置),它是 存在于每组“大小”值中。 我的目标是创建这样的视图:

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. 执行运行时与默认值之间的比率。

问题是在查询 1 中(应该是查询 2 的 select 语句中的子查询)我不知道我目前正在考虑哪个“大小”。 我希望你明白我的意思。

我有办法解决这个问题吗?

【问题讨论】:

    标签: mysql view nested-query


    【解决方案1】:

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

    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
    

    在线查看:sqlfiddle

    【讨论】:

      【解决方案2】:
      SELECT Configuration, Size, default.Runtime / t.Runtime AS Speedup FROM t JOIN (
        SELECT Size, Runtime FROM t WHERE Configuration = 0
      ) `default` USING (Size)
      

      sqlfiddle 上查看。

      【讨论】:

        猜你喜欢
        • 2021-02-05
        • 2014-02-07
        • 2018-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多