3

好的,我对 SQL 的使用效率很高,我尝试在左连接中使用 OR 语句,发现它不起作用。

我这样做的原因是因为我有来自两个表的两列,如果其中一个返回 NULL,我试图使用它们来连接。我有两张桌子 - 事件和季节。每个表都有一个赞助商 ID 列,我用它来加入赞助商表。这背后的原因是因为有时赞助单个赛事而不是整个赛季或其他方式。

我的问题是我能做到这一点的最好方法是什么。我的原始查询与此不同,但它的概念相同(除了它不会从每个表中获取每一列)。

SELECT sp.*, re.*, ev.*, se.* 
FROM events ev 
INNER JOIN seasons se ON se.season_id=ev.event_sid 
INNER JOIN results re ON ev.event_id=re.results_eid 
LEFT JOIN sponsors sp ON ev.event_sponsor=sp.sponsor_id

最后我试着继续OR se.season_sponsor=sp.sponsor_id

最终,我尝试使用 ev.event_sponsor 或 se.season_sponsor 加入赞助商表。任何帮助深表感谢。我做了一些研究,但找不到我想要完成的事情的答案。

4

1 回答 1

1

尝试:

SELECT sp.*, re.*, ev.*, se.* 
FROM events ev 
INNER JOIN seasons se ON se.season_id=ev.event_sid 
INNER JOIN results re ON ev.event_id=re.results_eid 
LEFT JOIN sponsors sp ON COALESCE(ev.event_sponsor,se.season_sponsor)=sp.sponsor_id
于 2013-02-14T15:34:05.167 回答