UNION使用问题

MySql 码拜 8年前 (2016-05-13) 1063次浏览
刚入门的新手,在做SQL优化的时候,优化成这个结果以后,一直报错ERROR 1222 (21000): The used SELECT statements have a different number of columns
网上查了一下,说是两个表结构不同,本人单独查询之后确定表结构是一样的,百思不得其解。
select count(*) from
(select a.com_id,a.com_status from com_compor_main_search a join (select distinct com_id from prod_product_search_search)b on a.com_id=b.com_id and a.com_status in(1,6)) c
union all
(select z.com_id,z.com_status from
(select a.com_id,a.com_status,t.trade_type from com_compor_main_search a join (select distinct com_id,trade_type from stkbd_tradeinfo_search)t on a.com_id=t.com_id)z where z.trade_type in(1,3,5,6,7) and z.com_status in(1,6));
解决方案

20

SELECT count(*)
FROM (
SELECT a.com_id,
a.com_status
FROM com_compor_main_search AS a
INNER JOIN
(SELECT DISTINCT com_id
FROM prod_product_search_search
) AS b
ON a.com_id = b.com_id
AND a.com_status IN (1, 6)
) AS c  — COUNT(*) 作用的子查询是这前面的,这个 COUNT(*) 只有1个列,和后面的 两个列的查询怎么 UNION ALL ?
UNION ALL
(SELECT z.com_id,
z.com_status
FROM (SELECT a.com_id,
a.com_status,
t.trade_type
FROM com_compor_main_search AS a
INNER JOIN
(SELECT DISTINCT com_id,
trade_type
FROM stkbd_tradeinfo_search) AS t
ON a.com_id = t.com_id) AS z
WHERE z.trade_type IN (1, 3, 5, 6, 7)
AND z.com_status IN (1, 6));

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UNION使用问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)