PHP CI sql 查询语法

我需要一些有关查询的帮助,因为我似乎无法理解它。


第一桌空缺:


vac_id

vac_title

vac_location

vac_description

is_deleted

status

第二个表空缺标签:


vac_id

Label_id

现在我想得到一个包含某个位置内所有空缺的输出,但它们也不能包含该位置的 label_id '10'。


SELECT `v`.*

FROM `vacancies` AS `v`

LEFT JOIN `vacancies_labels` as `vl` ON `v`.`vacancy_id` = `bl`.`vacancy_id`

WHERE `v`.`vac_location` = 'russia'

AND `v`.`is_deleted` != 1

AND `v`.`status` = 1

AND `vl`.`label_id` NOT IN ('10')

GROUP BY `v`.`vacancy_id`

这只会导致在 vacancies_labels 表中有记录的空缺不是 10。然而,它会忽略在 vacancies_labels 表中根本没有记录但适合位置范围的所有空缺。


我在这里缺少什么?


智慧大石
浏览 138回答 1
1回答

函数式编程

使用 LEFT JOIN,如果未找到记录,则值将返回 null。但是在你的 WHERE 子句中,你有AND `vl`.`label_id` NOT IN ('10')由于NOT IN 不考虑空值,您必须执行以下操作...AND ( `vl`.`label_id` NOT IN ('10') OR `vl`.`label_id` IS NULL)
打开App,查看更多内容
随时随地看视频慕课网APP