【发布时间】:2021-02-27 00:06:49
【问题描述】:
我有两张桌子:
- 关注列表:
| media_id | saved_language |
|---|---|
| 000001 | en |
| 000002 | en |
- 媒体:
| media_id | media_title | data_language |
|---|---|---|
| 000001 | Title in English | en |
| 000002 | Title in English | en |
| 000002 | Title in Italian | it |
我想加入这两个 media_id 相同但语言必须是我输入的常量(例如“it”)的表(如果可用),否则它应该使用保存在监视列表表中的默认语言永远在场。
我写的查询是这样的:
SELECT * FROM watchlist
LEFT JOIN media
ON media.media_id = watchlist.media_id
AND (media.data_language = "it" OR media.data_language = watchlist.saved_language)
但是使用一个简单的 OR 我显然得到了两种语言的结果。我也已经尝试过使用 CASE,但结果相同。我想要的是为每个 media_id 保留一行,其中语言最好是“它”,或者,只有当它在媒体表中不可用时,才使用保存在监视列表中的那个,它总是有匹配的。
我想要的结果示例:
| media_id | media_title | saved_language | data_language |
|---|---|---|---|
| 000001 | Title in English | en | en |
| 000002 | Title in Italian | en | it |
【问题讨论】:
-
用您正在使用的数据库标记您的问题。