gpt4 book ai didi

mysql - 这个 LEFT JOIN 使用有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:30 26 4
gpt4 key购买 nike

我对 LEFT JOIN 的使用有一点疑问。

我有这个问题:

SELECT
LD.id AS disease_id,
LD.disease_name_en AS disease_name_en,
LDN.disease_name AS disease_name,
LDN.description AS description,
LD.image_link AS image_link
FROM LsDiseases AS LD
LEFT JOIN LsDiseaseName AS LDN
ON LDN.disease_id = LD.id

WHERE
LD.id = 1
AND
LDN.language_id = 1

返回这样的输出:

disease_id           disease_name_en          disease_name             description      image_link                                                                                                                                                                                                                                                     
----------------------------------------------------------------------------------------------------------------------------------------
1 Newcastle disease Newcastle disease TEST https://firebasestorage.googleapis.com/XXX

如您所见,这些字段:

  • disease_name_en
  • disease_name
  • 描述

来自 LsDiseaseName,该表包含对 LsDisease 表中记录的翻译。

好的,它有效。我使用了 LEFT JOIN 因为我的想法是:“如果存在对 LsDiseaseName 表的翻译(对于 LsDisease 表的记录)这些字段将被赋值,如果翻译不存在,则仅将信息返回到 LsDisease 表中,并且 LsDiseaseName 的前一个字段将被赋值为 null 值(value)。

问题在于更改此 WHERE 子句:

LDN.language_id = 3

使用我没有翻译的语言的 id

我正在获取一个空的结果集。那么,我的推理有什么问题呢?我错过了什么?

最佳答案

实际上,您首先要应用联接,然后过滤 id = 3 的最终结果集,这就是您得到空结果集的原因。

您应该在加入时进行语言过滤。

SELECT
LD.id AS disease_id,
LD.disease_name_en AS disease_name_en,
LDN.disease_name AS disease_name,
LDN.description AS description,
LD.image_link AS image_link
FROM LsDiseases AS LD
LEFT JOIN LsDiseaseName AS LDN
ON LDN.disease_id = LD.id AND LDN.Language_id = 3

WHERE
LD.id = 1

关于mysql - 这个 LEFT JOIN 使用有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49402249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com