2015-04-12 50 views
-1

如果我有如下表:在使用具有WHERE子句

my_table:  
    varchar name 
    int  score 

,我想要做以下查詢:

select name from my_table group by name having count(*)>3 
union 
select name from my_table where name like '%xyz' 

有沒有辦法做這個查詢沒有工會?

要清楚:我想要在表中回答類似條款'%xyz'的所有名稱都有三個以上的條目。

+0

因此,澄清,你想要什麼結果?你的編輯建議你想要所有分數大於3的名字?你能舉個例子說明你想要結果的樣子嗎? – Drazisil

回答

1

下面的查詢將只搶了類似條款分組之前匹配名稱:

SELECT name,count(*) as num FROM my_table GROUP BY name HAVING num > 3 OR name like '%xyz' 

編輯:上面的查詢已經被改變,以允許名稱或num的條款,引起行被接受。

0
select name,count(*) as num 
from my_table 
group by name having num>3 
where name like '%xyz' 
+0

我相信這個選擇不會返回與上述聯合相同的結果。它將返回回答具有和類似子句的名稱,而上面的名稱是回答其中一個記錄的兩組記錄之間的聯合。 –

0

聯合僅在鏈接兩個表時使用。

我認爲您正在尋找類似的東西?

SELECT name,count(*) as num 
FROM my_table 
GROUP BY name 
HAVING num > 3 OR name like '%xyz' 

http://sqlfiddle.com/#!9/1b6a0/2/0

編輯以閱讀預期的結果後OP的問題相匹配。