2015-10-28 2 views
0

У меня есть таблица, которая выглядит так,Как запустить этот запрос без оператора union?

year,t1,t2,winner 

Я хочу, чтобы найти общие выступления в финале для команды, в основном мне нужно союза эти два запроса

select t1 from cups 
union 
select t2 from cups 

, а затем сделать a group by. Тем не менее, я хотел бы запустить этот запрос, не используя UNION (а не домашнюю работу), поскольку я считаю, что UNION не является стандартным SQL. Я не могу использовать IN, поскольку я потеряю счет. Есть ли у кого-нибудь предложения?

+2

Союз - это стандартный SQL. –

+0

Просьба представить некоторые примеры данных и ожидаемый результат. – Wanderer

ответ

2

Вам нужно получить две строки для каждой строки ввода, одну для t1 и одну для t2. UNION - это правильный и стандартный способ SQL для этого. Я даже не могу придумать другой смутно разумный способ сделать это, и даже те появляются для сканирования таблицы дважды.

1

Вы должны использовать UNION ALL, чтобы включить в него даже дубликаты.
Затем подсчитывайте каждую команду.

Запрос

select t.team,count(t.team) as `Total Appearances` 
from 
(
    select team1 as team from tblMatches 
    union all 
    select team2 as team from tblMatches 
)t 
group by t.team; 

SQL Fiddle

0

UNION Оператор зарезервирован ключевое слово в SQL


About SQL UNION Operator

Оператор UNION используется для объединения результирующего набора из двух или более операторов SELECT.

Обратите внимание, что каждый оператор SELECT в пределах UNION должен иметь одинаковое количество столбцов. Столбцы также должны иметь похожие типы данных. Кроме того, столбцы в каждом операторе SELECT должны быть в том же порядке.


SQL UNION Синтаксис

SELECT column_name(s) FROM table1 
UNION 
SELECT column_name(s) FROM table2; 

То же самое с Inner join

select t1 
FROM cups 
INNER JOIN cups2 
ON t1.column_name=t2.column_name; 

и вы найти два различных поля в одной таблице

select t1 from cups 
union 
select t2 from cups 

так попробовать этот

SELECT * 
FROM cups 
WHERE t1=t2 
0

Если вы хотите, чтобы найти имя команды и подсчет того, сколько раз, что команда достигла финала , что-то вроде этого могло бы помочь:

select team, count(1) as appearances from 
( select t1 as team from cups 
     union all 
    select t2 as team from cups 
) as totalAppearances 

group by team 
Смежные вопросы