EXISTS()
是一个强大的工具,用于在MySQL中检查子查询是否返回任何行。
它特别适用于验证某个条件是否存在于数据库中,而不需要检索或处理实际数据。
举个例子:
现在的场景是有一张用户表、一张部门表和一张部门用户需求表,
一位用户可以被多个部门关联,现在需要建立一个规范化的数据模型来从第部门用户需求表中查询出某位用户关联的部门及其相关的信息
过去用户表中,会用多个 ”,“ 来隔开不同的部门 id,因为需要建立一个规范化的数据模型,所以现在建议建立一张一对一关联的 用户_部门 关联表,
即一个用户 id 字段关联一个部门 id 字段,一个用户关联多个部门,就多存几条数据进去
写SQL :
SELECT p.*
FROM 部门用户需求表 p
WHERE EXISTS (
SELECT 1 FROM 部门表 d
JOIN 用户_部门表 ud ON d.部门_id = ud.部门_id
JOIN 用户表 u ON ud.用户_id = u.用户_id
WHERE p.部门用户需求表_id = d.部门表_id
AND u.用户 = '用户1' )
AND 部门用户需求表其他条件;
这里主要是提供了一个 mysql 的框架,具体情况还是要具体写