Mysql 子查询和从两个表获取数据

Mysql 子查询和从两个表获取数据,mysql,mysql-workbench,Mysql,Mysql Workbench,我需要列出排名前3位的每匹马的马的id、马的名称,例如排名1、2或3两次或两次以上。提示:尝试使用WHERE…IN 我很确定我必须从马匹表中获取数据,其中包括马匹id和马匹名称,以及从奖品表中获取数据,其中包括马匹所在的列位置。但是PLACE表只有EVENT\u id、PLACE和Money列,因此我不确定如何将其与horse表连接起来。很难理解您的表和数据,因为您将其发布在注释中而不是问题中,但请尝试一下 select horse.* from horse inner join

我需要列出排名前3位的每匹马的马的id、马的名称,例如排名1、2或3两次或两次以上。提示:尝试使用WHERE…IN


我很确定我必须从马匹表中获取数据,其中包括马匹id和马匹名称,以及从奖品表中获取数据,其中包括马匹所在的列位置。但是PLACE表只有EVENT\u id、PLACE和Money列,因此我不确定如何将其与horse表连接起来。

很难理解您的表和数据,因为您将其发布在注释中而不是问题中,但请尝试一下

select horse.* 
  from horse
    inner join entry
      on horse.horse_id = entry.horse_id
  where entry.place <= 3
  group by horse.horse_id
  having count(horse.horse_id) >= 2

你能详细介绍一下你的三张桌子吗;像字段名/类型。应该有更多的表/列您没有告诉我们。有一个条目表我可以链接到它。条目表列包括事件id、马id和地点。如果表中也有一个horse_id,那么这样做可能会更好?我想我的主要问题是,如何选择超过两次出现在1,2,3的马匹,您需要发布表架构、样本数据以及该数据的预期输出。我收到错误代码1054。未知列条目。将其放置在WHERE子句中。根据您在评论中发布的内容,条目有一个位置栏。在问题中,您可以发布所有表的show create table输出吗?将在两秒钟内完成。不过很快,根据您发布的内容,我可以在哪里以及如何实现“两次或更多次”部分?谢谢。@Jerrymagur你现在有机会测试一下这个吗?是的,我有,做得很好。我想我把它标记为已回答,不是吗
SELECT horse_id,name
FROM HORSE
WHERE horse_id IN
(SELECT horse_id
FROM ENTRY
WHERE place <= 3
GROUP BY horse_id
HAVING count(horse_id) > 1);