【问题标题】:using union in a complex query在复杂查询中使用联合
【发布时间】:2018-03-13 05:08:44
【问题描述】:

这是我的 sql 代码。当我在 mysql bench 上运行它时,它运行得很好,但是在 union 所在的地方有一个语法错误,这不会影响最终结果。我试图添加括号来分隔联合部分,但我仍然会遇到相同的语法错误。 并不是说当我运行它时它似乎工作得很好。

SELECT date, time_code, number, power
FROM power_total
WHERE number IN ( 
                  SELECT number
                  FROM table_1 AS b
                  WHERE something
                    AND something
                    AND something
                    AND type = 1

                  UNION

                  SELECT dem.number AS number
                  FROM table_1 AS b
                  INNER JOIN (SELECT re.point_number AS number
                              FROM table_2 AS re
                              INNER JOIN table_3 AS dc
                                ON something = something
                              WHERE type_id IN (1 , 2)
                                 AND something IS NULL
                                 AND date <= '2016-09-01'
                            ) AS dem
                    ON dem.number = b.number
                 )
AND date BETWEEN '20160901' AND '20160930'

【问题讨论】:

  • 您在查询的最后一行有错误删除最后一行的最后两个括号。如果你想检查,那么你可以参考这个网址:sqlfiddle.com/#!9/9eecb/20947
  • 为您的问题中的表添加数据库架构。

标签: mysql sql sqlite


【解决方案1】:

对欲望输出使用休闲查询:

SELECT date, time_code, number, power FROM power_total
    WHERE number IN (  SELECT number  FROM table_1 AS b 
                                      WHERE something =something        
                                      AND something=something
                                      AND something=something
                                      AND type = 1
                      UNION
                      SELECT dem.number AS number   FROM table_1 AS b
                      INNER JOIN (SELECT re.point_number AS number    FROM table_2 AS re
                                  INNER JOIN table_3 AS dc 
                                    ON something = something
                                      WHERE type_id IN (1 , 2)
                                     AND something IS NULL
                                     AND date <= '2016-09-01'
                                ) AS dem
                        ON dem.number = b.number) 
             AND date BETWEEN '20160901' AND '20160930'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2013-12-03
    相关资源
    最近更新 更多