代码之家  ›  专栏  ›  技术社区  ›  Ashish Agarwal

Mysql中的错误#1221是什么?这个SqlQuery中的基本问题是什么?

  •  1
  • Ashish Agarwal  · 技术社区  · 17 年前

    SQL查询

    选择日期、月份、总和(事实1), (2/Sum(fact_2)),2 FROM(SELECT 时间.日期,时间.月,时间.年, 事实1,0作为销售事实中的事实2, 时间和时间一样暗,在哪里 time.date按time.year联合排序 选择time.date、time.month、, 最大值(销售\目标\事实。销售\目标) 作为来自销售、目标和事实的事实, 时间和时间一样暗,在哪里 time.id=sales\u target\u fact.time\u id和 time.date=“2008-01-01”分组依据 time.date按time.year排序的订单) 年

    误差线

    • UNION和ORDER BY的用法不正确
    • 错误代码#1221
    2 回复  |  直到 12 年前
        1
  •  6
  •   Adam Bellaire    17 年前

    ORDER BY SELECT 语句来指示MySQL如何应用它。

    从 MySQL Docs

    使用ORDERBY或LIMIT子句 将单个选择项插入括号中 声明并通过或下订单 限制在最后一个之后。

    订购人 除此之外:

    SELECT date , month , Sum(fact_1) , ( 2 / Sum(fact_2) ) , 2 
    FROM( 
      (SELECT time.date, time.month, time.year, 
         MAX(sales_fact.sell_out_value) as fact_1, 0 as fact_2 
      FROM sales_fact, time_dim as time 
      WHERE time.id=sales_fact.time_id AND time.date="2008-01-01"
      GROUP BY time.date)
      UNION 
      (SELECT time.date, time.month, time.year, 0 as fact_1,
         MAX(sales_target_fact.sell_out_target) as fact_2
       FROM sales_target_fact, time_dim as time
       WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01"
       GROUP BY time.date)
       ORDER BY time.year
    ) as Combined_Table GROUP BY date ORDER BY year
    

    或者,如果您想要 订购人 UNION ,把 订购人 挑选 声明。

    SELECT date , month , Sum(fact_1) , ( 2 / Sum(fact_2) ) , 2 
    FROM( 
      (SELECT time.date, time.month, time.year, 
         MAX(sales_fact.sell_out_value) as fact_1, 0 as fact_2 
      FROM sales_fact, time_dim as time 
      WHERE time.id=sales_fact.time_id AND time.date="2008-01-01"
      GROUP BY time.date
      ORDER BY time.year)
      UNION 
      (SELECT time.date, time.month, time.year, 0 as fact_1,
         MAX(sales_target_fact.sell_out_target) as fact_2
       FROM sales_target_fact, time_dim as time
       WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01"
       GROUP BY time.date
       ORDER BY time.year)
    ) as Combined_Table GROUP BY date ORDER BY year