[英]MySQL multiple UNION with alias
我已经看了好几个小时了,但无法发现错误:
致命错误:消息为“ SQLSTATE [42000]”的未捕获的异常“ PDOException”:语法错误或访问冲突:1064 SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在“ t2 UNION”(第34行“ SELECT a.item_id”)附近使用
我试过括号和别名的不同变体,试过将SELECT DISTINCT
与UNION 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.