sql left join limit子查询

时间:2013-10-24 09:44:13

标签: mysql join subquery left-join

我试图让“spielplan”的每个元素只获得“live_spiele”的一个元素(最后一个)。 这是整个查询:

SELECT live.resh as l_resh, live.resa as l_resa, s.spielid, s.datum, s.zeit
       , s.ort, t.name, t.kurzname, s.gegner, s.resh, s.resa 
       from spielplan s
          LEFT JOIN (Select l.livespiel_id, l.resh, l.resa, l.spiel_id from live_spiele l) 
          live on s.spielid = live.spiel_id
       , teams t
       WHERE DATE(s.datum) BETWEEN '".$date1."' AND '".$date2."' 
       AND s.teamid = t.teamid 
       ORDER BY datum, zeit

但是对于“spielplan”中的元素,这给了我超过1行,如果有多行是具有相同标识符的“live_spiele”。

我在子查询中尝试的是MIN / MAX,但这没有帮助,因为MIN / MAX值通常不是标识符的正确值。 我也试过LIMIT,但我没有得到解决方案。

有没有办法只选择“live_spielplan”,其中标识符与“spielplan s”标识符相同?

1 个答案:

答案 0 :(得分:1)

使用GROUP BY子句:

SELECT live.resh as l_resh, live.resa as l_resa, s.spielid, s.datum, s.zeit
   , s.ort, t.name, t.kurzname, s.gegner, s.resh, s.resa 
from spielplan s
LEFT JOIN (Select l.livespiel_id, l.resh, l.resa, l.spiel_id from live_spiele l) 
live 
on s.spielid = live.spiel_id
, teams t
WHERE DATE(s.datum) BETWEEN '".$date1."' AND '".$date2."' 
AND s.teamid = t.teamid 
ORDER BY datum, zeit GROUP BY s.spiel_id