2011-05-20 61 views
1
SELECT id, count(*) as Number 
FROM  (SELECT id FROM t1 
      UNION ALL 
      SELECT id FROM t2 
      UNION ALL 
      SELECT id FROM t3 
     ) t 
GROUP BY id 
ORDER BY Number DESC 

這是給我正確結果的查詢。但是,當我想添加在哪裏調用拋出錯誤。如何解決這個特定的查詢?

SELECT id, count(*) as Number 
FROM  (SELECT id from t1 
      UNION ALL 
      select id from t2 
      UNION ALL 
      select id from t3 
     ) t 
WHERE  Number > 10 
GROUP BY id 
ORDER BY Number DESC 

回答

2

要測試條件對聚合函數與HAVING條款,而不是一個WHERE

select id, count(*) as Number 
    from (select id 
       from t1 
      UNION ALL 
      select id 
       from t2 
      UNION ALL 
      select id 
       from t3) t 
    group by id 
    having Number > 10 
    order by Number desc; 
0
select 
    id, 
    count(*) as Number 
from 
    (
    select 
     id 
    from 
     t1 
    UNION ALL 
     select 
      id 
     from 
      t2 
     UNION ALL 
      select 
       id 
      from 
       t3 
    )t 
group by 
    id 
HAVING 
    Number > 10 
order by 
    Number desc; 

嘗試 - 我認爲它更容易,如果你讓你的查詢易於閱讀調試......

+0

其它查詢是很容易,你做了什麼閱讀。 – Johan 2011-05-20 14:16:36

+0

是的,如果你是盲人死亡的猴子賣香水......:PI發現,嵌套更容易,但嘿每一個自己..只是說,不格式化它有點難以閱讀..(PS OP根本沒有格式化) – 2011-05-20 15:30:14