为了账号安全,请及时绑定邮箱和手机立即绑定

PHP CI sql 查询语法

PHP CI sql 查询语法

PHP
智慧大石 2021-11-13 18:59:27
我需要一些有关查询的帮助,因为我似乎无法理解它。第一桌空缺:vac_idvac_titlevac_locationvac_descriptionis_deletedstatus第二个表空缺标签:vac_idLabel_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` != 1AND `v`.`status` = 1AND `vl`.`label_id` NOT IN ('10')GROUP BY `v`.`vacancy_id`这只会导致在 vacancies_labels 表中有记录的空缺不是 10。然而,它会忽略在 vacancies_labels 表中根本没有记录但适合位置范围的所有空缺。我在这里缺少什么?
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

使用 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)


查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信