【问题标题】:combine big join query with duplicate query将大连接查询与重复查询相结合
【发布时间】:2017-11-24 14:50:50
【问题描述】:

我正在努力组合这两个 sql 查询。

SELECT players.player_id, players.tag, players.game_race,
       earnings.tournament, earnings.player, earnings.position,
       tournaments.tournament_id, tournaments.region
  FROM players
  JOIN earnings ON players.player_id = earnings.player 
  JOIN tournaments ON earnings.tournament = tournaments.tournament_id
  where position = 1
ORDER BY players.player_id;

SELECT tournament, earnings.player, prize_money, position 
FROM earnings 
join (
    SELECT player FROM earnings 
    where position = 1 group by player having count(player) > 3) 
as DupPlayer
on earnings.player=DupPlayer.player
where position = 1;

所以我尝试了一个工会。

(SELECT players.player_id, players.tag, players.game_race,
       earnings.tournament, earnings.player, earnings.position,
       tournaments.tournament_id, tournaments.region
  FROM players
  JOIN earnings ON players.player_id = earnings.player 
  JOIN tournaments ON earnings.tournament = tournaments.tournament_id
  where position = 1
ORDER BY players.player_id
)
UNION
(
SELECT tournament, earnings.player, prize_money, position 
FROM earnings 
join (
    SELECT player FROM earnings 
    where position = 1 group by player having count(player) > 3) 
as DupPlayer
on earnings.player=DupPlayer.player
where position = 1
);

然后我收到错误消息“使用的 SELECT 语句的列数不同”。我该如何解决这个问题?有没有比联合更好的方法?我真的不想更改我的选择语句,因为我想查看所有这些列。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    组合如下查询:

    SELECT players.player_id, players.tag, players.game_race,
           earnings.tournament, earnings.player, earnings.position,
           tournaments.tournament_id, tournaments.region
      FROM players
      JOIN earnings ON players.player_id = earnings.player 
      JOIN (SELECT player FROM earnings 
            where position = 1 group by player having count(player) > 3) 
            as DupPlayer on earnings.player=DupPlayer.player
      JOIN tournaments ON earnings.tournament = tournaments.tournament_id
      where position = 1
    ORDER BY players.player_id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多