【问题标题】:Can you Divide 2 completely different query results into 1 result你能把2个完全不同的查询结果分成1个结果吗
【发布时间】:2013-09-30 20:36:09
【问题描述】:

我试图将数字结果从 2 个完全不同的查询中分离出来。

最终结果应该是查询 1 除以查询 2

查询 1 =

SELECT COUNT(DISTINCT(table1.ID)) AS count_1
FROM table1 
    INNER JOIN op 
    INNER JOIN Org 
    ON table1.EID = op.id 
        AND Op.OrgID = Org.ID
WHERE table1.TitleID = 123
    AND op.BrandID = 1 
    AND op.Start <= NOW() AND op.End >= NOW();

查询 2 =

SELECT COUNT(DISTINCT user.id) AS count_2
FROM table1 INNER JOIN user INNER JOIN ur
    ON table1.EID = user.id AND ur.userID = user.id
WHERE 
    user.BrandID = 1 
    AND table1.TitleID = 123
    AND ur.role = 0
    AND user.Inactive = 0;

【问题讨论】:

    标签: mysql sql inner-join division


    【解决方案1】:

    当然!您可以使用子选择来实现这一点,尽管它会非常冗长!

    SELECT
    (
        SELECT COUNT(DISTINCT(table1.ID)) AS count_1
        FROM table1 
            INNER JOIN op 
            INNER JOIN Org 
            ON table1.EID = op.id 
                AND Op.OrgID = Org.ID
        WHERE table1.TitleID = 123
            AND op.BrandID = 1 
            AND op.Start <= NOW() AND op.End >= NOW()
    ) / (
        SELECT COUNT(DISTINCT user.id) AS count_2
        FROM table1 INNER JOIN user INNER JOIN ur
            ON table1.EID = user.id AND ur.userID = user.id
        WHERE 
            user.BrandID = 1 
            AND table1.TitleID = 123
            AND ur.role = 0
            AND user.Inactive = 0
    );
    

    格式,但它对你来说最不难看。

    【讨论】:

      【解决方案2】:

      使用这样的子查询:

      SELECT Q1.count_1 / Q2.Count_2 
      FROM 
      ( ... Query1 ...) AS Q1
      JOIN
      ( ... Query2 ...) AS Q2
      ON 1=1
      

      将 Query1 和 Query2 替换为您的代码。

      【讨论】:

        【解决方案3】:

        像这样:

        SELECT count_1 / count_2
        FROM (SELECT COUNT(*) count_1 FROM foo) f
        JOIN  (SELECT COUNT(*) count_2 FROM bar) b ON 1=1;
        

        http://sqlfiddle.com/#!2/c215e/1

        【讨论】:

          猜你喜欢
          • 2019-01-09
          • 2019-02-19
          • 1970-01-01
          • 2017-04-28
          • 1970-01-01
          • 2015-02-07
          • 1970-01-01
          • 1970-01-01
          • 2022-11-30
          相关资源
          最近更新 更多