2015-04-12 3 views
-1

Если у меня есть следующая таблица:использования имея в котором пункт

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' 

EDIT: приведенный выше запрос был изменен, чтобы позволить либо имя или 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 после прочтения желаемых результатов.

Смежные вопросы