帮助,我需要使用左连接。我有两张桌子; Horse_table,有horse_id,名字。 Entry_Table,有horse_id,地方。 我需要列出马匹和马匹的名字,这些马匹从来没有赢过第一名。按horse_id订购。
这就是我所拥有的;
Select a.horse_id, a.name,
COALESCE ('place'>=1) as 'Never Won First Place'
From horse a LEFT JOIN entry b
ON (a.horse_id=b.horse_id)
AND (b.horse_id=a.name)
Where Horse_id<=502
ORDER by Horse_id;
这个问题是它会返回所有马匹,而不是那些马匹,我尝试使用Where b.place>=1
,但它不会返回任何结果。
答案 0 :(得分:0)
尝试这样的事情:
SELECT a.horse_id,
a.NAME
FROM horse a
INNER JOIN (
SELECT horse_id, min(place)
FROM ENTRY
GROUP BY horse_id
HAVING MIN(place) > 1
) b ON a.horse_id = b.horse_id
ORDER BY Horse_id;
只要该位置不是第一名,你就以他曾经完成的最佳位置(MIN(PLACE))加入马桌。
答案 1 :(得分:0)
列出所有位置大于1的马id和马名(意味着从未获得第一名)。
Select
a.horse_id, a.name,
From
horse a
INNER JOIN
entry b
ON
a.horse_id=b.horse_id
Where
b.place>1
ORDER by a.horse_id;