如何在没有union运算符的情况下运行此查询?

时间:2015-10-28 05:02:56

标签: mysql sql

我有一张看起来像这样的表,

year,t1,t2,winner

我想在团队的总决赛中找到总出场次数,基本上我需要将这两个查询联合起来

select t1 from cups
union
select t2 from cups

然后执行group by。但是,我想在不使用UNION(不是作业)的情况下运行此查询,因为我认为UNION不是标准SQL。我无法使用IN,因为我会丢失计数。有人有什么建议吗?

4 个答案:

答案 0 :(得分:2)

每个输入行需要两行,一行用于t1,一行用于t2。 UNION是正确的标准SQL方法。我甚至无法想到另一种模糊不清的方法,甚至那些出现来扫描表格两次。

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分: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