繁体   English   中英

MySQL多个UNION带别名

[英]MySQL multiple UNION with alias

我已经看了好几个小时了,但无法发现错误:

致命错误:消息为“ SQLSTATE [42000]”的未捕获的异常“ PDOException”:语法错误或访问冲突:1064 SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在“ t2 UNION”(第34行“ SELECT a.item_id”)附近使用

我试过括号和别名的不同变体,试过将SELECT DISTINCTUNION ALL ,已验证了数量? 参数匹配...我想念什么?

SELECT COUNT(*)
FROM (SELECT    a.item_id
      FROM      catalog_items AS a
      JOIN      catalog_franchises AS b ON a.game_id = b.franchise_id
      JOIN      catalog_franchises AS c ON a.manufacturer_id = c.franchise_id
      LEFT JOIN catalog_franchises AS d ON a.exclusive_id = d.franchise_id
      JOIN      catalog_item_categories AS e ON a.item_id = e.item_id
                AND e.valid = TRUE
      JOIN      catalog_categories AS f ON e.cat_id = f.cat_id AND f.parent_id = ?
                AND f.cat_id IN (?,?,?) AND f.valid = TRUE
      WHERE     d.franchise_id = ?
                AND a.valid = TRUE
                AND b.valid = TRUE
                AND c.valid = TRUE
                AND (d.valid = TRUE OR d.title IS NULL)
                AND a.region_id = ?
                AND a.quantity IS NOT NULL) t1
      UNION
     (SELECT    a.item_id
      FROM      catalog_items AS a
      JOIN      catalog_franchises AS b ON a.game_id = b.franchise_id
      JOIN      catalog_franchises AS c ON a.manufacturer_id = c.franchise_id
      LEFT JOIN catalog_franchises AS d ON a.exclusive_id = d.franchise_id
      JOIN      catalog_item_categories AS e ON a.item_id = e.item_id
                AND e.valid = TRUE
      JOIN      catalog_categories AS f ON e.cat_id = f.cat_id AND f.parent_id = ?
                AND f.cat_id IN (?,?) AND f.valid = TRUE
      WHERE     d.franchise_id = ?
                AND a.valid = TRUE
                AND b.valid = TRUE
                AND c.valid = TRUE
                AND (d.valid = TRUE OR d.title IS NULL)
                AND a.region_id = ?
                AND a.quantity IS NOT NULL) t2
      UNION
     (SELECT    a.item_id
      FROM      catalog_items AS a
      JOIN      catalog_franchises AS b ON a.game_id = b.franchise_id
      JOIN      catalog_franchises AS c ON a.manufacturer_id = c.franchise_id
      LEFT JOIN catalog_franchises AS d ON a.exclusive_id = d.franchise_id
      JOIN      catalog_editions AS e ON a.edition_id = e.edition_id AND e.edition_id IN (?,?,?) AND e.valid = TRUE
      WHERE     d.franchise_id = ?
                AND a.valid = TRUE
                AND b.valid = TRUE
                AND c.valid = TRUE
                AND (d.valid = TRUE OR d.title IS NULL)
                AND a.region_id = ?
                AND a.quantity IS NOT NULL) t3

这是它的样子

select * from (
select ..
union
select...
) as x  -- you need alias here

你做错了

select ... from
(
select ...
) as t1
union 
select ... -- then this prompted an error because the derived table just ended at the ')', anything after the 't1' is irrelevant

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM