mysql - 将大连接查询与重复查询相结合

标签 mysql sql

我正在努力组合这两个 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 语句具有不同的列数”。我该如何解决这个问题?有没有比 union 更好的方法?我真的不想更改我的选择语句,因为我想查看所有这些列。

最佳答案

像下面这样组合查询:

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;

关于mysql - 将大连接查询与重复查询相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475646/

相关文章:

php - mysql 查询慢 - IP 查找(禁止与否)

用于 Ruby On Rails 的 MySQL Gem

mysql - 手动增量值如何插入选择?

sql - 选择以数字开头的值

sql - 当列是字符串数据类型时,在 mssql 中使用 'Pivot' 将行转换为列

mysql - 加快自连接sql查询速度

mysql - 在我的插入请求中增加我的 id

mysql - 为什么我收到此错误 - 字段列表中的未知列 'customers.c_id'

sql - Rails 4 中的 sanitize_sql_array

mysql - 在 SQL 中检查每个月每天有多少次