gpt4 book ai didi

mysql - 多左连接的正确语法是什么?左表的条件是什么?

转载 作者:行者123 更新时间:2023-11-29 06:25:48 25 4
gpt4 key购买 nike

以下 select 语句返回零结果,为什么?

SELECT `post_job`.`id`,
`post_job_description`.`title`,
`employers_description`.`name`
FROM (`post_job`)
LEFT JOIN `post_job_description`
ON `post_job`.`id` = `post_job_description`.`post_job_id`
LEFT JOIN `employers_description`
ON `post_job`.`employers_id` = `employers_description`.`id`
WHERE `post_job`.`published` = 1
AND `post_job_description`.`language` IN ('en')
AND `employers_description`.`language` IN ('en')
AND `post_job`.`deleted` = 0
GROUP BY `post_job_description`.`post_job_id`
LIMIT 25

当我删除它时:

AND `employers_description`.`language` IN ('en')

它返回数据,但 employers_description 的值。name 不是英文

post_job 表:

enter image description here

post_job_description 表:

enter image description here

employers_description 表:

enter image description here

最佳答案

ON子句:

`post_job`.`employers_id` = `employers_description`.`id`

用于加入employers_description表到 post_job表。

只从 post_job 中选择了 单个 行表(根据您发布的示例数据):

id employers_id published deleted
---------------------------------
1 2 1 0

根据上述ON子句,以下一行也是来自 employers_description 的唯一一行正在被 LEFT JOIN 获取:

name    id language
-----------------
MaIT ar 2 ar

因此,这个谓词:

`employers_description`.`language` IN ('en')

过滤掉这一行,你没有得到任何结果。如果你从 WHERE 中取出这个谓词子句,那么你会返回这一行,但是,正如你从上面看到的,language = ar .

您必须更改 id name = MaIT ar 的记录值来自 21 , 所以来自 employers_description 的两个语言版本LEFT JOIN 获取操作(如 post_job_description 表中的情况)。

作为旁注,也许您应该考虑规范化 post_job_descriptionemployers_description保持表格 language每个帖子和language每个员工的信息在单独的表中。

关于mysql - 多左连接的正确语法是什么?左表的条件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077506/

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