首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果内联接查询不存在,则执行SQLite select查询

如果内联接查询不存在,则执行SQLite select查询
EN

Stack Overflow用户
提问于 2020-02-29 04:18:46
回答 2查看 294关注 0票数 0

我有两个表,一个用于所有食物,其中包含食物id、默认名称和其他食物值。

另一个表用于食品名称翻译,其中包含食品id、语言id、翻译。

我想要做的是通过食品id在这些表之间进行连接,以获得例如食品id =5和西班牙语语言id =1的翻译。我是这样做的:

代码语言:javascript
运行
复制
SELECT * 
FROM Foods 
INNER JOIN FoodNameTranslations USING(Food_ID) 
WHERE Food_ID = 5 
AND Language_ID = 1

现在,如果'FoodNameTranslations‘表没有Food_ID 5和Language 1的翻译怎么办?然后,我想简单地从'Foods‘表(包含缺省名称)中获得食品id =5的食品行。

我怎么才能做一个这样的查询呢?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-29 04:39:43

您将执行左连接,并将语言ID放入连接条件中。

代码语言:javascript
运行
复制
SELECT
    COALESCE(t.TranslatedName, f.DefaultName) FoodName 
FROM 
    Foods f
    LEFT JOIN FoodNameTranslations t ON t.Food_ID = f.Food_ID AND t.Language_ID = 1
WHERE
    f.Food_ID = 5
票数 1
EN

Stack Overflow用户

发布于 2020-02-29 04:39:12

您可以通过更改联接条件来执行此操作:

INNER JOIN根据提供的on子句获取两个表之间共有的所有记录。

LEFT JOIN获取左侧链接中的所有记录和右侧表中的相关记录,但如果您从右侧表中选择了一些列,如果没有相关记录,则这些列将包含NULL。

RIGHT JOIN与上面类似,但会获取右表中的所有记录。

FULL JOIN从两个表中获取所有记录,并在相对表中不存在相关记录的列中放置NULL。

尝试使用LEFT JOIN而不是INNER JOIN,您的查询将如下所示: SELECT * FROM Foods LEFT JOIN FoodNameTranslations USING( Food_ID ) WHERE Food_ID=5 FoodNameTranslations Language_ID =1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60458721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档