1

我有两个表,我需要查询一个名为 horse 的表,其中包含 Name 和 Horse_id 一个名为 entry 的表,其中包含 Horse_id 和 Place。(地方是马来的地方,例如第 1、第 2、第 3)。

我需要使用子查询来显示每匹多次获得第一、二或三等奖的马的名称和 ID。

到目前为止我有(我还没有进入“不止一次”的部分)

SELECT horse_id, name FROM 
(SELECT count(place) AS horse_id, name FROM entry)
WHERE entry.place<3;

虽然这行不通。错误是“每个派生表都必须有自己的别名”。我不确定我应该命名什么,而且我发现很难找到此类查询的示例。

我也试过:

SELECT horse_id, name FROM horse
WHERE place IN(SELECT horse_id FROM entry WHERE entry.place<3);

不知道我哪里错了

4

4 回答 4

0

我很抱歉,应该更好地阅读这个问题..刚刚在我的系统上创建了表格,这很有效:

select name, horse_id 
FROM horse LEFT JOIN 
(select horse_id, count(horse_id) as c FROM entry where place < 4 group by horse_id) as h 
USING (horse_id) WHERE c > 1;
于 2012-07-24T23:26:15.277 回答
0

最简单的解决方案是:

SELECT horse_id, name FROM 
(SELECT count(place) AS horse_id, name FROM entry WHERE entry.place<3) as cute_little_ponies;
于 2012-07-24T23:27:52.997 回答
0
SELECT horse_id, name, SUM(IF(place<=3,1,0)) AS top_3_count
FROM horse
JOIN entry USING (horse_id)
GROUP BY horse_id
HAVING top_3_count > 1
于 2012-07-24T23:29:55.787 回答
0
SELECT Horse_id,Name FROM HORSE
WHERE Horse_id IN 
(SELECT Horse_id FROM ENTRY WHERE Place IN (1,2,3) GROUP BY Horse_id HAVING COUNT(Horse_id)>1); 
于 2014-11-06T06:15:50.907 回答